• Andreas Färber's avatar
    Introduce qemu_madvise() · e78815a5
    Andreas Färber authored
    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: default avatarAndreas 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: default avatarBlue Swirl <blauwirbel@gmail.com>
arch_init.c 15.7 KB