On 04.01.2018 18:39, Andreas Gustafsson wrote: > 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 <g...@gson.org>
Reviewed-by: Kamil Rytarowski <n...@gmx.com> > --- > configure | 19 +++++++++++++++++++ > util/oslib-posix.c | 2 +- > 2 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/configure b/configure > index 100309c33f..9f8580332a 100755 > --- a/configure > +++ b/configure > @@ -4573,6 +4573,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 > > @@ -5542,6 +5557,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" > @@ -6015,6 +6031,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) { >
signature.asc
Description: OpenPGP digital signature