diff options
author | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-12-05 20:05:26 +0000 |
---|---|---|
committer | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-12-05 20:05:26 +0000 |
commit | bf9298b90eee0b95cab11fc74790dcbddca4252e (patch) | |
tree | 5073e5a326855e8044de043bd882cc29759c4364 | |
parent | a38131b669253fe40eff41e17ab7d1df78adbcd8 (diff) |
Make struct iovec universally available
Vectored IO APIs will require some sort of vector argument. It makes sense to
use struct iovec and just define it globally for Windows.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5889 c046a42c-6fe2-441c-8c8c-71466251a162
-rwxr-xr-x | configure | 14 | ||||
-rw-r--r-- | hw/virtio.h | 9 | ||||
-rw-r--r-- | qemu-common.h | 10 | ||||
-rw-r--r-- | slirp/socket.c | 1 | ||||
-rw-r--r-- | slirp/socket.h | 8 |
5 files changed, 24 insertions, 18 deletions
@@ -1017,6 +1017,17 @@ EOF fi fi +########################################## +# iovec probe +cat > $TMPC <<EOF +#include <sys/uio.h> +int main(void) { struct iovec iov; return 0; } +EOF +iovec=no +if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then + iovec=yes +fi + # Check if tools are available to build documentation. if [ -x "`which texi2html 2>/dev/null`" ] && \ [ -x "`which pod2man 2>/dev/null`" ]; then @@ -1376,6 +1387,9 @@ fi if test "$blobs" = "yes" ; then echo "INSTALL_BLOBS=yes" >> $config_mak fi +if test "$iovec" = "yes" ; then + echo "#define HAVE_IOVEC 1" >> $config_h +fi # XXX: suppress that if [ "$bsd" = "yes" ] ; then diff --git a/hw/virtio.h b/hw/virtio.h index 0aa3b09c4f..83511e2cb0 100644 --- a/hw/virtio.h +++ b/hw/virtio.h @@ -17,15 +17,6 @@ #include "hw.h" #include "pci.h" -#ifdef _WIN32 -struct iovec { - void *iov_base; - size_t iov_len; -}; -#else -#include <sys/uio.h> -#endif - /* from Linux's linux/virtio_config.h */ /* Status byte for guest to report progress, and synchronize features. */ diff --git a/qemu-common.h b/qemu-common.h index 308847a21d..e1546c671b 100644 --- a/qemu-common.h +++ b/qemu-common.h @@ -16,6 +16,7 @@ #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> +#include "config-host.h" #ifndef O_LARGEFILE #define O_LARGEFILE 0 @@ -28,6 +29,14 @@ #define ENOMEDIUM ENODEV #endif +#ifndef HAVE_IOVEC +#define HAVE_IOVEC +struct iovec { + void *iov_base; + size_t iov_len; +}; +#endif + #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #define WINVER 0x0501 /* needed for ipv6 bits */ @@ -54,7 +63,6 @@ static inline char *realpath(const char *path, char *resolved_path) /* FIXME: Remove NEED_CPU_H. */ #ifndef NEED_CPU_H -#include "config-host.h" #include <setjmp.h> #include "osdep.h" #include "bswap.h" diff --git a/slirp/socket.c b/slirp/socket.c index 7bc0dc5f32..75f98fd40b 100644 --- a/slirp/socket.c +++ b/slirp/socket.c @@ -11,6 +11,7 @@ #ifdef __sun__ #include <sys/filio.h> #endif +#include "qemu-common.h" static void sofcantrcvmore(struct socket *so); static void sofcantsendmore(struct socket *so); diff --git a/slirp/socket.h b/slirp/socket.h index 94fb8d8cf2..5edea90c93 100644 --- a/slirp/socket.h +++ b/slirp/socket.h @@ -73,14 +73,6 @@ struct socket { extern struct socket tcb; - -#if defined(DECLARE_IOVEC) && !defined(HAVE_READV) -struct iovec { - char *iov_base; - size_t iov_len; -}; -#endif - struct socket * solookup _P((struct socket *, struct in_addr, u_int, struct in_addr, u_int)); struct socket * socreate _P((void)); void sofree _P((struct socket *)); |