All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Andrew Baumann <Andrew.Baumann@microsoft.com>,
	Stefan Weil <sw@weilnetz.de>
Subject: [Qemu-devel] [PATCH v2 10/18] io: introduce qio_channel_create_socket_watch
Date: Thu, 10 Mar 2016 17:26:57 +0000	[thread overview]
Message-ID: <1457630825-26638-11-git-send-email-berrange@redhat.com> (raw)
In-Reply-To: <1457630825-26638-1-git-send-email-berrange@redhat.com>

From: Paolo Bonzini <pbonzini@redhat.com>

Sockets are not in the same namespace as file descriptors on Windows.
As an initial step, introduce separate APIs for file descriptor and
socket watches.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/io/channel-watch.h | 20 +++++++++++++++++++-
 io/channel-socket.c        |  6 +++---
 io/channel-watch.c         | 15 +++++++++++++++
 3 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/include/io/channel-watch.h b/include/io/channel-watch.h
index 656358a..76d7642 100644
--- a/include/io/channel-watch.h
+++ b/include/io/channel-watch.h
@@ -39,7 +39,7 @@
  * monitor the file descriptor @fd for the
  * I/O conditions in @condition. This is able
  * monitor block devices, character devices,
- * sockets, pipes but not plain files.
+ * pipes but not plain files or, on Win32, sockets.
  *
  * Returns: the new main loop source
  */
@@ -48,6 +48,24 @@ GSource *qio_channel_create_fd_watch(QIOChannel *ioc,
                                      GIOCondition condition);
 
 /**
+ * qio_channel_create_socket_watch:
+ * @ioc: the channel object
+ * @fd: the file descriptor
+ * @condition: the I/O condition
+ *
+ * Create a new main loop source that is able to
+ * monitor the file descriptor @fd for the
+ * I/O conditions in @condition. This is equivalent
+ * to qio_channel_create_fd_watch on POSIX systems
+ * but not on Windows.
+ *
+ * Returns: the new main loop source
+ */
+GSource *qio_channel_create_socket_watch(QIOChannel *ioc,
+                                         int fd,
+                                         GIOCondition condition);
+
+/**
  * qio_channel_create_fd_pair_watch:
  * @ioc: the channel object
  * @fdread: the file descriptor for reading
diff --git a/io/channel-socket.c b/io/channel-socket.c
index 5f087e6..775bb9f 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -714,9 +714,9 @@ static GSource *qio_channel_socket_create_watch(QIOChannel *ioc,
                                                 GIOCondition condition)
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
-    return qio_channel_create_fd_watch(ioc,
-                                       sioc->fd,
-                                       condition);
+    return qio_channel_create_socket_watch(ioc,
+                                           sioc->fd,
+                                           condition);
 }
 
 static void qio_channel_socket_class_init(ObjectClass *klass,
diff --git a/io/channel-watch.c b/io/channel-watch.c
index 5373605..dfac8f8 100644
--- a/io/channel-watch.c
+++ b/io/channel-watch.c
@@ -172,6 +172,21 @@ GSource *qio_channel_create_fd_watch(QIOChannel *ioc,
     return source;
 }
 
+#ifdef CONFIG_WIN32
+GSource *qio_channel_create_socket_watch(QIOChannel *ioc,
+                                         int socket,
+                                         GIOCondition condition)
+{
+    abort();
+}
+#else
+GSource *qio_channel_create_socket_watch(QIOChannel *ioc,
+                                         int socket,
+                                         GIOCondition condition)
+{
+    return qio_channel_create_fd_watch(ioc, socket, condition);
+}
+#endif
 
 GSource *qio_channel_create_fd_pair_watch(QIOChannel *ioc,
                                           int fdread,
-- 
2.5.0

  parent reply	other threads:[~2016-03-10 17:27 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-10 17:26 [Qemu-devel] [PATCH v2 00/18] Multiple fixes & improvements to QIOChannel & Win32 Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 01/18] osdep: fix socket_error() to work with Mingw64 Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 02/18] io: use bind() to check for IPv4/6 availability Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 03/18] io: initialize sockets in test program Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 04/18] io: bind to socket before creating QIOChannelSocket Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 05/18] io: wait for incoming client in socket test Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 06/18] io: set correct error object in background reader test thread Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 07/18] io: assert errors before asserting content in I/O test Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 08/18] io: fix copy+paste mistake in socket error message Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 09/18] io: pass HANDLE to g_source_add_poll on Win32 Daniel P. Berrange
2016-03-10 17:26 ` Daniel P. Berrange [this message]
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 11/18] io: use qemu_accept to ensure SOCK_CLOEXEC is set Daniel P. Berrange
2016-03-10 17:26 ` [Qemu-devel] [PATCH v2 12/18] io: remove checking of EWOULDBLOCK Daniel P. Berrange
2016-03-10 17:27 ` [Qemu-devel] [PATCH v2 13/18] io: implement socket watch for win32 using WSAEventSelect+select Daniel P. Berrange
2016-03-10 17:27 ` [Qemu-devel] [PATCH v2 14/18] char: remove qemu_chr_finish_socket_connection method Daniel P. Berrange
2016-03-10 17:27 ` [Qemu-devel] [PATCH v2 15/18] char: remove socket_try_connect method Daniel P. Berrange
2016-03-10 17:27 ` [Qemu-devel] [PATCH v2 16/18] char: remove qemu_chr_open_socket_fd method Daniel P. Berrange
2016-03-10 17:27 ` [Qemu-devel] [PATCH v2 17/18] osdep: add wrappers for socket functions Daniel P. Berrange
2016-03-10 17:27 ` [Qemu-devel] [PATCH v2 18/18] osdep: remove use of socket_error() from all code Daniel P. Berrange
2016-03-10 17:36 ` [Qemu-devel] [PATCH v2 00/18] Multiple fixes & improvements to QIOChannel & Win32 Paolo Bonzini
2016-03-11 23:51   ` Andrew Baumann
2016-03-14 14:10     ` Daniel P. Berrange

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1457630825-26638-11-git-send-email-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=Andrew.Baumann@microsoft.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sw@weilnetz.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.