summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-09-26 15:52:17 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-09-26 15:52:17 +0000
commit997306fc2246048b9a4e8df4b4bb96eab6c65a82 (patch)
tree659de38c9880f753c6596a3e9d10886503b7c567
parent2ca83a8dd63bde5f78300dc0c21159873d5aaf54 (diff)
downloadqemu-997306fc2246048b9a4e8df4b4bb96eab6c65a82.tar.gz
Fix build on FreeBSD
__GLIBC_PREREQ is defined in such a way that the ! cannot be used in front of it on FreeBSD. Also, -lpthread is not implied by the build and we definitely use it for compatfd support. While at it, I added a default initialization for posix-aio that seems to perform well in our testing. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5322 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--block-raw-posix.c22
-rwxr-xr-xconfigure4
2 files changed, 15 insertions, 11 deletions
diff --git a/block-raw-posix.c b/block-raw-posix.c
index 97dd30af61..147730dd73 100644
--- a/block-raw-posix.c
+++ b/block-raw-posix.c
@@ -525,6 +525,7 @@ static int posix_aio_init(void)
{
sigset_t mask;
PosixAioState *s;
+ struct aioinit ai;
if (posix_aio_state)
return 0;
@@ -545,18 +546,19 @@ static int posix_aio_init(void)
qemu_aio_set_fd_handler(s->fd, posix_aio_read, NULL, posix_aio_flush, s);
-#if defined(__linux__) && defined(__GLIBC_PREREQ) && !__GLIBC_PREREQ(2, 4)
- {
- /* XXX: aio thread exit seems to hang on RedHat 9 and this init
- seems to fix the problem. */
- struct aioinit ai;
- memset(&ai, 0, sizeof(ai));
- ai.aio_threads = 1;
- ai.aio_num = 1;
- ai.aio_idle_time = 365 * 100000;
- aio_init(&ai);
+ memset(&ai, 0, sizeof(ai));
+#if !defined(__linux__) || (defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 4))
+ ai.aio_threads = 5;
+ ai.aio_num = 1;
+#else
+ /* XXX: aio thread exit seems to hang on RedHat 9 and this init
+ seems to fix the problem. */
+ ai.aio_threads = 1;
+ ai.aio_num = 1;
+ ai.aio_idle_time = 365 * 100000;
}
#endif
+ aio_init(&ai);
posix_aio_state = s;
return 0;
diff --git a/configure b/configure
index dd82e881ce..6a727c0a5a 100755
--- a/configure
+++ b/configure
@@ -482,8 +482,10 @@ if test "$mingw32" = "yes" ; then
linux_user="no"
fi
-if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
+if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
AIOLIBS=
+elif [ "$bsd" = "yes" ]; then
+ AIOLIBS="-lpthread"
else
# Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
AIOLIBS="-lrt -lpthread"