mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
Introduce qemu_madvise()
vl.c has a Sun-specific hack to supply a prototype for madvise(), but the call site has apparently moved to arch_init.c. Haiku doesn't implement madvise() in favor of posix_madvise(). OpenBSD and Solaris 10 don't implement posix_madvise() but madvise(). MinGW implements neither. Check for madvise() and posix_madvise() in configure and supply qemu_madvise() as wrapper. Prefer madvise() over posix_madvise() due to flag availability. Convert all callers to use qemu_madvise() and QEMU_MADV_*. Note that on Solaris the warning is fixed by moving the madvise() prototype, not by qemu_madvise() itself. It helps with porting though, and it simplifies most call sites. v7 -> v8: * Some versions of MinGW have no sys/mman.h header. Reported by Blue Swirl. v6 -> v7: * Adopt madvise() rather than posix_madvise() semantics for returning errors. * Use EINVAL in place of ENOTSUP. v5 -> v6: * Replace two leftover instances of POSIX_MADV_NORMAL with QEMU_MADV_INVALID. Spotted by Blue Swirl. v4 -> v5: * Introduce QEMU_MADV_INVALID, suggested by Alexander Graf. Note that this relies on -1 not being a valid advice value. v3 -> v4: * Eliminate #ifdefs at qemu_advise() call sites. Requested by Blue Swirl. This will currently break the check in kvm-all.c by calling madvise() with a supported flag, which will not fail. Ideas/patches welcome. v2 -> v3: * Reuse the *_MADV_* defines for QEMU_MADV_*. Suggested by Alexander Graf. * Add configure check for madvise(), too. Add defines to Makefile, not QEMU_CFLAGS. Convert all callers, untested. Suggested by Blue Swirl. * Keep Solaris' madvise() prototype around. Pointed out by Alexander Graf. * Display configure check results. v1 -> v2: * Don't rely on posix_madvise() availability, add qemu_madvise(). Suggested by Blue Swirl. Signed-off-by: Andreas Färber <afaerber@opensolaris.org> Cc: Blue Swirl <blauwirbel@gmail.com> Cc: Alexander Graf <agraf@suse.de> Cc: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
d63cb48db9
commit
e78815a554
8 changed files with 100 additions and 20 deletions
33
configure
vendored
33
configure
vendored
|
@ -2071,6 +2071,31 @@ if compile_prog "" "" ; then
|
|||
fdatasync=yes
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# check if we have madvise
|
||||
|
||||
madvise=no
|
||||
cat > $TMPC << EOF
|
||||
#include <sys/types.h>
|
||||
#include <sys/mman.h>
|
||||
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
|
||||
EOF
|
||||
if compile_prog "" "" ; then
|
||||
madvise=yes
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# check if we have posix_madvise
|
||||
|
||||
posix_madvise=no
|
||||
cat > $TMPC << EOF
|
||||
#include <sys/mman.h>
|
||||
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
|
||||
EOF
|
||||
if compile_prog "" "" ; then
|
||||
posix_madvise=yes
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# check if trace backend exists
|
||||
|
||||
|
@ -2238,6 +2263,8 @@ echo "KVM support $kvm"
|
|||
echo "fdt support $fdt"
|
||||
echo "preadv support $preadv"
|
||||
echo "fdatasync $fdatasync"
|
||||
echo "madvise $madvise"
|
||||
echo "posix_madvise $posix_madvise"
|
||||
echo "uuid support $uuid"
|
||||
echo "vhost-net support $vhost_net"
|
||||
echo "Trace backend $trace_backend"
|
||||
|
@ -2478,6 +2505,12 @@ fi
|
|||
if test "$fdatasync" = "yes" ; then
|
||||
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$madvise" = "yes" ; then
|
||||
echo "CONFIG_MADVISE=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$posix_madvise" = "yes" ; then
|
||||
echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
# XXX: suppress that
|
||||
if [ "$bsd" = "yes" ] ; then
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue