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

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(MAP_SHARED) || (defined(HAVE_DECL_MAP_SHARED) && HAVE_DECL_MAP_SHARED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_SHARED) == (1), "MAP_SHARED != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_SHARED 1
#endif
#if defined(MAP_PRIVATE) || (defined(HAVE_DECL_MAP_PRIVATE) && HAVE_DECL_MAP_PRIVATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_PRIVATE) == (2), "MAP_PRIVATE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_PRIVATE 2
#endif
#if defined(MAP_SHARED_VALIDATE) || (defined(HAVE_DECL_MAP_SHARED_VALIDATE) && HAVE_DECL_MAP_SHARED_VALIDATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_SHARED_VALIDATE) == (3), "MAP_SHARED_VALIDATE != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_SHARED_VALIDATE 3
#endif
#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat mmap_flags in mpers mode

# else

static
const struct xlat mmap_flags[] = {
 XLAT(MAP_SHARED),
 XLAT(MAP_PRIVATE),
 XLAT(MAP_SHARED_VALIDATE),
#if defined(MAP_FIXED) || (defined(HAVE_DECL_MAP_FIXED) && HAVE_DECL_MAP_FIXED)
  XLAT(MAP_FIXED),
#endif
#if defined(MAP_ANONYMOUS) || (defined(HAVE_DECL_MAP_ANONYMOUS) && HAVE_DECL_MAP_ANONYMOUS)
  XLAT(MAP_ANONYMOUS),
#endif
#if defined(MAP_32BIT) || (defined(HAVE_DECL_MAP_32BIT) && HAVE_DECL_MAP_32BIT)
  XLAT(MAP_32BIT),
#endif
#if defined(MAP_RENAME) || (defined(HAVE_DECL_MAP_RENAME) && HAVE_DECL_MAP_RENAME)
  XLAT(MAP_RENAME),
#endif
#if defined(MAP_NORESERVE) || (defined(HAVE_DECL_MAP_NORESERVE) && HAVE_DECL_MAP_NORESERVE)
  XLAT(MAP_NORESERVE),
#endif
#if defined(MAP_POPULATE) || (defined(HAVE_DECL_MAP_POPULATE) && HAVE_DECL_MAP_POPULATE)
  XLAT(MAP_POPULATE),
#endif
#if defined(MAP_NONBLOCK) || (defined(HAVE_DECL_MAP_NONBLOCK) && HAVE_DECL_MAP_NONBLOCK)
  XLAT(MAP_NONBLOCK),
#endif
#if defined(_MAP_NEW) || (defined(HAVE_DECL__MAP_NEW) && HAVE_DECL__MAP_NEW)
  XLAT(_MAP_NEW),
#endif
#if defined(MAP_GROWSDOWN) || (defined(HAVE_DECL_MAP_GROWSDOWN) && HAVE_DECL_MAP_GROWSDOWN)
  XLAT(MAP_GROWSDOWN),
#endif
#if defined(MAP_GROWSUP) || (defined(HAVE_DECL_MAP_GROWSUP) && HAVE_DECL_MAP_GROWSUP)
  XLAT(MAP_GROWSUP),
#endif
#if defined(MAP_DENYWRITE) || (defined(HAVE_DECL_MAP_DENYWRITE) && HAVE_DECL_MAP_DENYWRITE)
  XLAT(MAP_DENYWRITE),
#endif
#if defined(MAP_EXECUTABLE) || (defined(HAVE_DECL_MAP_EXECUTABLE) && HAVE_DECL_MAP_EXECUTABLE)
  XLAT(MAP_EXECUTABLE),
#endif
#if defined(MAP_INHERIT) || (defined(HAVE_DECL_MAP_INHERIT) && HAVE_DECL_MAP_INHERIT)
  XLAT(MAP_INHERIT),
#endif
#if defined(_MAP_INHERIT) || (defined(HAVE_DECL__MAP_INHERIT) && HAVE_DECL__MAP_INHERIT)
  XLAT(_MAP_INHERIT),
#endif
#if defined(MAP_FILE) || (defined(HAVE_DECL_MAP_FILE) && HAVE_DECL_MAP_FILE)
  XLAT(MAP_FILE),
#endif
#if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
  XLAT(MAP_LOCKED),
#endif
#if defined(_MAP_HASSEMAPHORE) || (defined(HAVE_DECL__MAP_HASSEMAPHORE) && HAVE_DECL__MAP_HASSEMAPHORE)
  XLAT(_MAP_HASSEMAPHORE),
#endif
#if defined(MAP_STACK) || (defined(HAVE_DECL_MAP_STACK) && HAVE_DECL_MAP_STACK)
  XLAT(MAP_STACK),
#endif
#if defined(MAP_HUGETLB) || (defined(HAVE_DECL_MAP_HUGETLB) && HAVE_DECL_MAP_HUGETLB)
  XLAT(MAP_HUGETLB),
#endif
#if defined(MAP_SYNC) || (defined(HAVE_DECL_MAP_SYNC) && HAVE_DECL_MAP_SYNC)
  XLAT(MAP_SYNC),
#endif
#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
#if defined(MAP_UNINITIALIZED) || (defined(HAVE_DECL_MAP_UNINITIALIZED) && HAVE_DECL_MAP_UNINITIALIZED)
  XLAT(MAP_UNINITIALIZED),
#endif
#endif
#if defined(MAP_FIXED_NOREPLACE) || (defined(HAVE_DECL_MAP_FIXED_NOREPLACE) && HAVE_DECL_MAP_FIXED_NOREPLACE)
  XLAT(MAP_FIXED_NOREPLACE),
#endif
#if defined(MAP_AUTOGROW) || (defined(HAVE_DECL_MAP_AUTOGROW) && HAVE_DECL_MAP_AUTOGROW)
  XLAT(MAP_AUTOGROW),
#endif
#if defined(MAP_AUTORSRV) || (defined(HAVE_DECL_MAP_AUTORSRV) && HAVE_DECL_MAP_AUTORSRV)
  XLAT(MAP_AUTORSRV),
#endif
#if defined(MAP_LOCAL) || (defined(HAVE_DECL_MAP_LOCAL) && HAVE_DECL_MAP_LOCAL)
  XLAT(MAP_LOCAL),
#endif
#if defined(_MAP_UNALIGNED) || (defined(HAVE_DECL__MAP_UNALIGNED) && HAVE_DECL__MAP_UNALIGNED)
  XLAT(_MAP_UNALIGNED),
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
