Commit 997306fc2246048b9a4e8df4b4bb96eab6c65a82
1 parent
2ca83a8d
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
Showing
2 changed files
with
15 additions
and
11 deletions
block-raw-posix.c
... | ... | @@ -525,6 +525,7 @@ static int posix_aio_init(void) |
525 | 525 | { |
526 | 526 | sigset_t mask; |
527 | 527 | PosixAioState *s; |
528 | + struct aioinit ai; | |
528 | 529 | |
529 | 530 | if (posix_aio_state) |
530 | 531 | return 0; |
... | ... | @@ -545,18 +546,19 @@ static int posix_aio_init(void) |
545 | 546 | |
546 | 547 | qemu_aio_set_fd_handler(s->fd, posix_aio_read, NULL, posix_aio_flush, s); |
547 | 548 | |
548 | -#if defined(__linux__) && defined(__GLIBC_PREREQ) && !__GLIBC_PREREQ(2, 4) | |
549 | - { | |
550 | - /* XXX: aio thread exit seems to hang on RedHat 9 and this init | |
551 | - seems to fix the problem. */ | |
552 | - struct aioinit ai; | |
553 | - memset(&ai, 0, sizeof(ai)); | |
554 | - ai.aio_threads = 1; | |
555 | - ai.aio_num = 1; | |
556 | - ai.aio_idle_time = 365 * 100000; | |
557 | - aio_init(&ai); | |
549 | + memset(&ai, 0, sizeof(ai)); | |
550 | +#if !defined(__linux__) || (defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 4)) | |
551 | + ai.aio_threads = 5; | |
552 | + ai.aio_num = 1; | |
553 | +#else | |
554 | + /* XXX: aio thread exit seems to hang on RedHat 9 and this init | |
555 | + seems to fix the problem. */ | |
556 | + ai.aio_threads = 1; | |
557 | + ai.aio_num = 1; | |
558 | + ai.aio_idle_time = 365 * 100000; | |
558 | 559 | } |
559 | 560 | #endif |
561 | + aio_init(&ai); | |
560 | 562 | posix_aio_state = s; |
561 | 563 | |
562 | 564 | return 0; | ... | ... |
configure
... | ... | @@ -482,8 +482,10 @@ if test "$mingw32" = "yes" ; then |
482 | 482 | linux_user="no" |
483 | 483 | fi |
484 | 484 | |
485 | -if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then | |
485 | +if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then | |
486 | 486 | AIOLIBS= |
487 | +elif [ "$bsd" = "yes" ]; then | |
488 | + AIOLIBS="-lpthread" | |
487 | 489 | else |
488 | 490 | # Some Linux architectures (e.g. s390) don't imply -lpthread automatically. |
489 | 491 | AIOLIBS="-lrt -lpthread" | ... | ... |