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>
This commit is contained in:
parent
a348f64d46
commit
9bc5a7193f
19
configure
vendored
19
configure
vendored
@ -4658,6 +4658,21 @@ if compile_prog "" "" ; then
|
||||
posix_madvise=yes
|
||||
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
|
||||
|
||||
@ -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
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user