« Previous | Next » 

Revision e78815a5

IDe78815a554adaa551d62a71be10ee2fcf128e473

Added by Andreas Färber over 13 years ago

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 <>
Cc: Blue Swirl <>
Cc: Alexander Graf <>
Cc: Andrea Arcangeli <>
Signed-off-by: Blue Swirl <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences