diff options
author | Andreas Gustafsson <gson@gson.org> | 2018-01-04 19:39:36 +0200 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2018-02-10 10:21:50 +0300 |
commit | 9bc5a7193fb422ee53187601eba577ee5d195522 (patch) | |
tree | 0511b1f31ac63a664f67c850aba70c8f031351f8 | |
parent | a348f64d4652d68212886019ca74825aa1667969 (diff) |
oslib-posix: check for posix_memalign in configure script
Check for the presence of posix_memalign() in the configure script,
not using "defined(_POSIX_C_SOURCE) && !defined(__sun__)". This
lets qemu use posix_memalign() on NetBSD versions that have it,
instead of falling back to valloc() which is wasteful when the
required alignment is smaller than a page.
Signed-off-by: Andreas Gustafsson <gson@gson.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Reviewed-by: Kamil Rytarowski <n54@gmx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
-rwxr-xr-x | configure | 19 | ||||
-rw-r--r-- | util/oslib-posix.c | 2 |
2 files changed, 20 insertions, 1 deletions
@@ -4659,6 +4659,21 @@ if compile_prog "" "" ; then fi ########################################## +# check if we have posix_memalign() + +posix_memalign=no +cat > $TMPC << EOF +#include <stdlib.h> +int main(void) { + void *p; + return posix_memalign(&p, 8, 8); +} +EOF +if compile_prog "" "" ; then + posix_memalign=yes +fi + +########################################## # check if we have posix_syslog posix_syslog=no @@ -5746,6 +5761,7 @@ echo "preadv support $preadv" echo "fdatasync $fdatasync" echo "madvise $madvise" echo "posix_madvise $posix_madvise" +echo "posix_memalign $posix_memalign" echo "libcap-ng support $cap_ng" echo "vhost-net support $vhost_net" echo "vhost-scsi support $vhost_scsi" @@ -6232,6 +6248,9 @@ fi if test "$posix_madvise" = "yes" ; then echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak fi +if test "$posix_memalign" = "yes" ; then + echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak +fi if test "$spice" = "yes" ; then echo "CONFIG_SPICE=y" >> $config_host_mak diff --git a/util/oslib-posix.c b/util/oslib-posix.c index 77369c92ce..4655bc1f89 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -105,7 +105,7 @@ void *qemu_try_memalign(size_t alignment, size_t size) alignment = sizeof(void*); } -#if defined(_POSIX_C_SOURCE) && !defined(__sun__) +#if defined(CONFIG_POSIX_MEMALIGN) int ret; ret = posix_memalign(&ptr, alignment, size); if (ret != 0) { |