/* Generated by ./xlat/gen.sh from ./xlat/madvise_cmds.in; do not edit. */

#ifdef IN_MPERS

# error static const struct xlat madvise_cmds in mpers mode

#else

static
const struct xlat madvise_cmds[] = {
#if defined(MADV_NORMAL) || (defined(HAVE_DECL_MADV_NORMAL) && HAVE_DECL_MADV_NORMAL)
  XLAT(MADV_NORMAL),
#endif
#if defined(MADV_RANDOM) || (defined(HAVE_DECL_MADV_RANDOM) && HAVE_DECL_MADV_RANDOM)
  XLAT(MADV_RANDOM),
#endif
#if defined(MADV_SEQUENTIAL) || (defined(HAVE_DECL_MADV_SEQUENTIAL) && HAVE_DECL_MADV_SEQUENTIAL)
  XLAT(MADV_SEQUENTIAL),
#endif
#if defined(MADV_WILLNEED) || (defined(HAVE_DECL_MADV_WILLNEED) && HAVE_DECL_MADV_WILLNEED)
  XLAT(MADV_WILLNEED),
#endif
#if defined(MADV_DONTNEED) || (defined(HAVE_DECL_MADV_DONTNEED) && HAVE_DECL_MADV_DONTNEED)
  XLAT(MADV_DONTNEED),
#endif
#if defined(MADV_REMOVE) || (defined(HAVE_DECL_MADV_REMOVE) && HAVE_DECL_MADV_REMOVE)
  XLAT(MADV_REMOVE),
#endif
#if defined(MADV_DONTFORK) || (defined(HAVE_DECL_MADV_DONTFORK) && HAVE_DECL_MADV_DONTFORK)
  XLAT(MADV_DONTFORK),
#endif
#if defined(MADV_DOFORK) || (defined(HAVE_DECL_MADV_DOFORK) && HAVE_DECL_MADV_DOFORK)
  XLAT(MADV_DOFORK),
#endif
#if defined(MADV_HWPOISON) || (defined(HAVE_DECL_MADV_HWPOISON) && HAVE_DECL_MADV_HWPOISON)
  XLAT(MADV_HWPOISON),
#endif
#if defined(MADV_SOFT_OFFLINE) || (defined(HAVE_DECL_MADV_SOFT_OFFLINE) && HAVE_DECL_MADV_SOFT_OFFLINE)
  XLAT(MADV_SOFT_OFFLINE),
#endif
#if defined(MADV_MERGEABLE) || (defined(HAVE_DECL_MADV_MERGEABLE) && HAVE_DECL_MADV_MERGEABLE)
  XLAT(MADV_MERGEABLE),
#endif
#if defined(MADV_UNMERGEABLE) || (defined(HAVE_DECL_MADV_UNMERGEABLE) && HAVE_DECL_MADV_UNMERGEABLE)
  XLAT(MADV_UNMERGEABLE),
#endif
#if defined(MADV_HUGEPAGE) || (defined(HAVE_DECL_MADV_HUGEPAGE) && HAVE_DECL_MADV_HUGEPAGE)
  XLAT(MADV_HUGEPAGE),
#endif
#if defined(MADV_NOHUGEPAGE) || (defined(HAVE_DECL_MADV_NOHUGEPAGE) && HAVE_DECL_MADV_NOHUGEPAGE)
  XLAT(MADV_NOHUGEPAGE),
#endif
#if defined(MADV_DONTDUMP) || (defined(HAVE_DECL_MADV_DONTDUMP) && HAVE_DECL_MADV_DONTDUMP)
  XLAT(MADV_DONTDUMP),
#endif
#if defined(MADV_DODUMP) || (defined(HAVE_DECL_MADV_DODUMP) && HAVE_DECL_MADV_DODUMP)
  XLAT(MADV_DODUMP),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
