qemu/include/qemu/madvise.h
<<
>>
Prefs
   1/*
   2 * QEMU madvise wrapper functions
   3 *
   4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   5 * See the COPYING file in the top-level directory.
   6 */
   7
   8#ifndef QEMU_MADVISE_H
   9#define QEMU_MADVISE_H
  10
  11#define QEMU_MADV_INVALID -1
  12
  13#if defined(CONFIG_MADVISE)
  14
  15#define QEMU_MADV_WILLNEED  MADV_WILLNEED
  16#define QEMU_MADV_DONTNEED  MADV_DONTNEED
  17#ifdef MADV_DONTFORK
  18#define QEMU_MADV_DONTFORK  MADV_DONTFORK
  19#else
  20#define QEMU_MADV_DONTFORK  QEMU_MADV_INVALID
  21#endif
  22#ifdef MADV_MERGEABLE
  23#define QEMU_MADV_MERGEABLE MADV_MERGEABLE
  24#else
  25#define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID
  26#endif
  27#ifdef MADV_UNMERGEABLE
  28#define QEMU_MADV_UNMERGEABLE MADV_UNMERGEABLE
  29#else
  30#define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID
  31#endif
  32#ifdef MADV_DODUMP
  33#define QEMU_MADV_DODUMP MADV_DODUMP
  34#else
  35#define QEMU_MADV_DODUMP QEMU_MADV_INVALID
  36#endif
  37#ifdef MADV_DONTDUMP
  38#define QEMU_MADV_DONTDUMP MADV_DONTDUMP
  39#else
  40#define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID
  41#endif
  42#ifdef MADV_HUGEPAGE
  43#define QEMU_MADV_HUGEPAGE MADV_HUGEPAGE
  44#else
  45#define QEMU_MADV_HUGEPAGE QEMU_MADV_INVALID
  46#endif
  47#ifdef MADV_NOHUGEPAGE
  48#define QEMU_MADV_NOHUGEPAGE MADV_NOHUGEPAGE
  49#else
  50#define QEMU_MADV_NOHUGEPAGE QEMU_MADV_INVALID
  51#endif
  52#ifdef MADV_REMOVE
  53#define QEMU_MADV_REMOVE MADV_REMOVE
  54#else
  55#define QEMU_MADV_REMOVE QEMU_MADV_DONTNEED
  56#endif
  57#ifdef MADV_POPULATE_WRITE
  58#define QEMU_MADV_POPULATE_WRITE MADV_POPULATE_WRITE
  59#else
  60#define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID
  61#endif
  62
  63#elif defined(CONFIG_POSIX_MADVISE)
  64
  65#define QEMU_MADV_WILLNEED  POSIX_MADV_WILLNEED
  66#define QEMU_MADV_DONTNEED  POSIX_MADV_DONTNEED
  67#define QEMU_MADV_DONTFORK  QEMU_MADV_INVALID
  68#define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID
  69#define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID
  70#define QEMU_MADV_DODUMP QEMU_MADV_INVALID
  71#define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID
  72#define QEMU_MADV_HUGEPAGE  QEMU_MADV_INVALID
  73#define QEMU_MADV_NOHUGEPAGE  QEMU_MADV_INVALID
  74#define QEMU_MADV_REMOVE QEMU_MADV_DONTNEED
  75#define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID
  76
  77#else /* no-op */
  78
  79#define QEMU_MADV_WILLNEED  QEMU_MADV_INVALID
  80#define QEMU_MADV_DONTNEED  QEMU_MADV_INVALID
  81#define QEMU_MADV_DONTFORK  QEMU_MADV_INVALID
  82#define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID
  83#define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID
  84#define QEMU_MADV_DODUMP QEMU_MADV_INVALID
  85#define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID
  86#define QEMU_MADV_HUGEPAGE  QEMU_MADV_INVALID
  87#define QEMU_MADV_NOHUGEPAGE  QEMU_MADV_INVALID
  88#define QEMU_MADV_REMOVE QEMU_MADV_INVALID
  89#define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID
  90
  91#endif
  92
  93int qemu_madvise(void *addr, size_t len, int advice);
  94
  95#endif
  96