| /* |
| * QEMU madvise wrapper functions |
| * |
| * This work is licensed under the terms of the GNU GPL, version 2 or later. |
| * See the COPYING file in the top-level directory. |
| */ |
| |
| #ifndef QEMU_MADVISE_H |
| #define QEMU_MADVISE_H |
| |
| #define QEMU_MADV_INVALID -1 |
| |
| #if defined(CONFIG_MADVISE) |
| |
| #define QEMU_MADV_WILLNEED MADV_WILLNEED |
| #define QEMU_MADV_DONTNEED MADV_DONTNEED |
| #ifdef MADV_DONTFORK |
| #define QEMU_MADV_DONTFORK MADV_DONTFORK |
| #else |
| #define QEMU_MADV_DONTFORK QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_MERGEABLE |
| #define QEMU_MADV_MERGEABLE MADV_MERGEABLE |
| #else |
| #define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_UNMERGEABLE |
| #define QEMU_MADV_UNMERGEABLE MADV_UNMERGEABLE |
| #else |
| #define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_DODUMP |
| #define QEMU_MADV_DODUMP MADV_DODUMP |
| #else |
| #define QEMU_MADV_DODUMP QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_DONTDUMP |
| #define QEMU_MADV_DONTDUMP MADV_DONTDUMP |
| #else |
| #define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_HUGEPAGE |
| #define QEMU_MADV_HUGEPAGE MADV_HUGEPAGE |
| #else |
| #define QEMU_MADV_HUGEPAGE QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_NOHUGEPAGE |
| #define QEMU_MADV_NOHUGEPAGE MADV_NOHUGEPAGE |
| #else |
| #define QEMU_MADV_NOHUGEPAGE QEMU_MADV_INVALID |
| #endif |
| #ifdef MADV_REMOVE |
| #define QEMU_MADV_REMOVE MADV_REMOVE |
| #else |
| #define QEMU_MADV_REMOVE QEMU_MADV_DONTNEED |
| #endif |
| #ifdef MADV_POPULATE_WRITE |
| #define QEMU_MADV_POPULATE_WRITE MADV_POPULATE_WRITE |
| #else |
| #define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID |
| #endif |
| |
| #elif defined(CONFIG_POSIX_MADVISE) |
| |
| #define QEMU_MADV_WILLNEED POSIX_MADV_WILLNEED |
| #define QEMU_MADV_DONTNEED POSIX_MADV_DONTNEED |
| #define QEMU_MADV_DONTFORK QEMU_MADV_INVALID |
| #define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID |
| #define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID |
| #define QEMU_MADV_DODUMP QEMU_MADV_INVALID |
| #define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID |
| #define QEMU_MADV_HUGEPAGE QEMU_MADV_INVALID |
| #define QEMU_MADV_NOHUGEPAGE QEMU_MADV_INVALID |
| #define QEMU_MADV_REMOVE QEMU_MADV_DONTNEED |
| #define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID |
| |
| #else /* no-op */ |
| |
| #define QEMU_MADV_WILLNEED QEMU_MADV_INVALID |
| #define QEMU_MADV_DONTNEED QEMU_MADV_INVALID |
| #define QEMU_MADV_DONTFORK QEMU_MADV_INVALID |
| #define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID |
| #define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID |
| #define QEMU_MADV_DODUMP QEMU_MADV_INVALID |
| #define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID |
| #define QEMU_MADV_HUGEPAGE QEMU_MADV_INVALID |
| #define QEMU_MADV_NOHUGEPAGE QEMU_MADV_INVALID |
| #define QEMU_MADV_REMOVE QEMU_MADV_INVALID |
| #define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID |
| |
| #endif |
| |
| int qemu_madvise(void *addr, size_t len, int advice); |
| |
| #endif |