From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36390) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adhuv-0008Pm-BM for qemu-devel@nongnu.org; Wed, 09 Mar 2016 12:29:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1adhur-0005zU-3n for qemu-devel@nongnu.org; Wed, 09 Mar 2016 12:29:01 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55068) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adhuq-0005zP-Rk for qemu-devel@nongnu.org; Wed, 09 Mar 2016 12:28:57 -0500 From: "Daniel P. Berrange" Date: Wed, 9 Mar 2016 17:28:14 +0000 Message-Id: <1457544504-8548-12-git-send-email-berrange@redhat.com> In-Reply-To: <1457544504-8548-1-git-send-email-berrange@redhat.com> References: <1457544504-8548-1-git-send-email-berrange@redhat.com> Subject: [Qemu-devel] [PATCH v1 11/21] io: introduce qio_channel_create_socket_watch List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Andrew Baumann , Stefan Weil From: Paolo Bonzini 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 --- 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 1de5cc0..6f7f594 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -716,9 +716,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