提交 bf9298b9 编写于 作者: A aliguori

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: NAnthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5889 c046a42c-6fe2-441c-8c8c-71466251a162
上级 a38131b6
......@@ -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
......
......@@ -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. */
......
......@@ -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"
......
......@@ -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);
......
......@@ -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 *));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册