MAP_SHARED
MAP_PRIVATE
MAP_FIXED
MAP_ANONYMOUS
MAP_32BIT
MAP_RENAME
MAP_NORESERVE
MAP_POPULATE
MAP_NONBLOCK
/*
 * 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()".
 */
_MAP_NEW
MAP_GROWSDOWN
MAP_DENYWRITE
MAP_EXECUTABLE
MAP_INHERIT
MAP_FILE
MAP_LOCKED
/* FreeBSD ones */
#if defined(MAP_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
MAP_ANON
#endif
MAP_HASSEMAPHORE
MAP_STACK
MAP_HUGETLB
#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
MAP_UNINITIALIZED
#endif
MAP_NOSYNC
MAP_NOCORE
