/* Generated by ./xlat/gen.sh from ./xlat/mmap_flags.in; do not edit. */
#if defined(MAP_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
#endif
#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
#endif

#ifdef IN_MPERS

# error static const struct xlat mmap_flags in mpers mode

#else

static
const struct xlat mmap_flags[] = {
#if defined(MAP_SHARED) || (defined(HAVE_DECL_MAP_SHARED) && HAVE_DECL_MAP_SHARED)
  XLAT(MAP_SHARED),
#endif
#if defined(MAP_PRIVATE) || (defined(HAVE_DECL_MAP_PRIVATE) && HAVE_DECL_MAP_PRIVATE)
  XLAT(MAP_PRIVATE),
#endif
#if defined(MAP_SHARED_VALIDATE) || (defined(HAVE_DECL_MAP_SHARED_VALIDATE) && HAVE_DECL_MAP_SHARED_VALIDATE)
  XLAT(MAP_SHARED_VALIDATE),
#endif
#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
/*
* XXX - this was introduced in SunOS 4.x to distinguish between
* the old pre-4.x "mmap()", which:
*
*	only let you map devices with an "mmap" routine (e.g.,
*	frame buffers) in;
*
*	required you to specify the mapping address;
*
*	returned 0 on success and -1 on failure;
*
* memory and which, and the 4.x "mmap()" which:
*
*	can map plain files;
*
*	can be asked to pick where to map the file;
*
*	returns the address where it mapped the file on success
*	and -1 on failure.
*
* It's not actually used in source code that calls "mmap()"; the
* "mmap()" routine adds it for you.
*
* It'd be nice to come up with some way of eliminating it from
* the flags, e.g. reporting calls *without* it as "old_mmap()"
* and calls with it as "mmap()".
*/
#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_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_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_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
#if defined(MAP_ANON) || (defined(HAVE_DECL_MAP_ANON) && HAVE_DECL_MAP_ANON)
  XLAT(MAP_ANON),
#endif
#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_NOSYNC) || (defined(HAVE_DECL_MAP_NOSYNC) && HAVE_DECL_MAP_NOSYNC)
  XLAT(MAP_NOSYNC),
#endif
#if defined(MAP_NOCORE) || (defined(HAVE_DECL_MAP_NOCORE) && HAVE_DECL_MAP_NOCORE)
  XLAT(MAP_NOCORE),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
