diff options
author | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-09-26 15:52:17 +0000 |
---|---|---|
committer | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-09-26 15:52:17 +0000 |
commit | 997306fc2246048b9a4e8df4b4bb96eab6c65a82 (patch) | |
tree | 659de38c9880f753c6596a3e9d10886503b7c567 | |
parent | 2ca83a8dd63bde5f78300dc0c21159873d5aaf54 (diff) |
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.c | 22 | ||||
-rwxr-xr-x | configure | 4 |
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; @@ -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" |