qemu/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch

78 lines
1.9 KiB
Diff
Raw Normal View History

From 32876859aeee3722398d98abfb6b6307e701091f Mon Sep 17 00:00:00 2001
2012-01-13 19:46:23 +00:00
From: Amit Shah <amit.shah@redhat.com>
Date: Mon, 21 Mar 2011 20:32:58 +0100
Subject: [PATCH 103/114] iohandlers: Add enable/disable_write_fd_handler()
2012-01-13 19:46:23 +00:00
functions
These will be used to provide a cleaner API for the nonblocking case.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
iohandler.c | 35 +++++++++++++++++++++++++++++++++++
main-loop.h | 3 +++
2 files changed, 38 insertions(+)
2012-01-13 19:46:23 +00:00
diff --git a/iohandler.c b/iohandler.c
index 3c74de6..250fd0e 100644
2012-01-13 19:46:23 +00:00
--- a/iohandler.c
+++ b/iohandler.c
@@ -45,6 +45,41 @@ typedef struct IOHandlerRecord {
static QLIST_HEAD(, IOHandlerRecord) io_handlers =
QLIST_HEAD_INITIALIZER(io_handlers);
2012-01-13 19:46:23 +00:00
+static IOHandlerRecord *find_iohandler(int fd)
+{
+ IOHandlerRecord *ioh;
+
+ QLIST_FOREACH(ioh, &io_handlers, next) {
+ if (ioh->fd == fd) {
+ return ioh;
+ }
+ }
+ return NULL;
+}
+
+void enable_write_fd_handler(int fd, IOHandler *fd_write)
+{
+ IOHandlerRecord *ioh;
+
+ ioh = find_iohandler(fd);
+ if (!ioh) {
+ return;
+ }
+
+ ioh->fd_write = fd_write;
+}
+
+void disable_write_fd_handler(int fd)
+{
+ IOHandlerRecord *ioh;
+
+ ioh = find_iohandler(fd);
+ if (!ioh) {
+ return;
+ }
+
+ ioh->fd_write = NULL;
+}
2012-01-13 19:46:23 +00:00
/* XXX: fd_read_poll should be suppressed, but an API change is
necessary in the character devices to suppress fd_can_read(). */
diff --git a/main-loop.h b/main-loop.h
index dce1cd9..eb31273 100644
2012-01-13 19:46:23 +00:00
--- a/main-loop.h
+++ b/main-loop.h
@@ -175,6 +175,9 @@ typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
2012-01-13 19:46:23 +00:00
typedef int IOCanReadHandler(void *opaque);
typedef void IOHandler(void *opaque);
2012-01-13 19:46:23 +00:00
+void enable_write_fd_handler(int fd, IOHandler *fd_write);
+void disable_write_fd_handler(int fd);
+
/**
* qemu_set_fd_handler2: Register a file descriptor with the main loop
*
--
1.7.10.4
2012-01-13 19:46:23 +00:00