#ifndef _SYS_MMAN_H_
#define _SYS_MMAN_H_
#include <sys/featuretest.h>
#include <machine/ansi.h>
#ifdef _BSD_SIZE_T_
typedef _BSD_SIZE_T_ size_t;
#undef _BSD_SIZE_T_
#endif
#include <sys/ansi.h>
#ifndef mode_t
typedef __mode_t mode_t;
#define mode_t __mode_t
#endif
#ifndef off_t
typedef __off_t off_t;
#define off_t __off_t
#endif
#define PROT_NONE 0x00
#define PROT_READ 0x01
#define PROT_WRITE 0x02
#define PROT_EXEC 0x04
#ifdef _NETBSD_SOURCE
#define PROT_MPROTECT(x) ((x) << 3)
#define PROT_MPROTECT_EXTRACT(x) (((x) >> 3) & 0x7)
#endif
#define MAP_SHARED 0x0001
#define MAP_PRIVATE 0x0002
#define MAP_REMAPDUP 0x0004
#define MAP_FIXED 0x0010
#define MAP_RENAME 0x0020
#define MAP_NORESERVE 0x0040
#define MAP_INHERIT 0x0080
#define MAP_HASSEMAPHORE 0x0200
#define MAP_TRYFIXED 0x0400
#define MAP_WIRED 0x0800
#define MAP_FILE 0x0000
#define MAP_ANONYMOUS 0x1000
#define MAP_ANON MAP_ANONYMOUS
#define MAP_STACK 0x2000
#define MAP_ALIGNED(n) ((int)((unsigned int)(n) << MAP_ALIGNMENT_SHIFT))
#define MAP_ALIGNMENT_SHIFT 24
#define MAP_ALIGNMENT_MASK MAP_ALIGNED(0xff)
#define MAP_ALIGNMENT_64KB MAP_ALIGNED(16)
#define MAP_ALIGNMENT_16MB MAP_ALIGNED(24)
#define MAP_ALIGNMENT_4GB MAP_ALIGNED(32)
#define MAP_ALIGNMENT_1TB MAP_ALIGNED(40)
#define MAP_ALIGNMENT_256TB MAP_ALIGNED(48)
#define MAP_ALIGNMENT_64PB MAP_ALIGNED(56)
#ifdef _NETBSD_SOURCE
#define MAP_FMT "\177\020" \
"b\0" "SHARED\0" \
"b\1" "PRIVATE\0" \
"b\2" "COPY\0" \
"b\4" "FIXED\0" \
"b\5" "RENAME\0" \
"b\6" "NORESERVE\0" \
"b\7" "INHERIT\0" \
"b\11" "HASSEMAPHORE\0" \
"b\12" "TRYFIXED\0" \
"b\13" "WIRED\0" \
"F\14\1\0" \
":\0" "FILE\0" \
":\1" "ANONYMOUS\0" \
"b\15" "STACK\0" \
"F\30\010\0" \
":\000" "ALIGN=NONE\0" \
":\012" "ALIGN=1KB\0" \
":\013" "ALIGN=2KB\0" \
":\014" "ALIGN=4KB\0" \
":\015" "ALIGN=8KB\0" \
":\016" "ALIGN=16KB\0" \
":\017" "ALIGN=32KB\0" \
":\020" "ALIGN=64KB\0" \
":\021" "ALIGN=128KB\0" \
":\022" "ALIGN=256KB\0" \
":\023" "ALIGN=512KB\0" \
":\024" "ALIGN=1MB\0" \
":\025" "ALIGN=2MB\0" \
":\026" "ALIGN=4MB\0" \
":\027" "ALIGN=8MB\0" \
":\030" "ALIGN=16MB\0" \
":\034" "ALIGN=256MB\0" \
":\040" "ALIGN=4GB\0" \
":\044" "ALIGN=64GB\0" \
":\050" "ALIGN=1TB\0" \
":\054" "ALIGN=16TB\0" \
":\060" "ALIGN=256TB\0" \
":\064" "ALIGN=4PB\0" \
":\070" "ALIGN=64PB\0" \
":\074" "ALIGN=1EB\0" \
"*" "ALIGN=2^%ju\0"
#endif
#define MAP_FAILED ((void *) -1)
#define MS_ASYNC 0x01
#define MS_INVALIDATE 0x02
#define MS_SYNC 0x04
#define MCL_CURRENT 0x01
#define MCL_FUTURE 0x02
#define POSIX_MADV_NORMAL 0
#define POSIX_MADV_RANDOM 1
#define POSIX_MADV_SEQUENTIAL 2
#define POSIX_MADV_WILLNEED 3
#define POSIX_MADV_DONTNEED 4
#if defined(_NETBSD_SOURCE)
#define MADV_NORMAL POSIX_MADV_NORMAL
#define MADV_RANDOM POSIX_MADV_RANDOM
#define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
#define MADV_WILLNEED POSIX_MADV_WILLNEED
#define MADV_DONTNEED POSIX_MADV_DONTNEED
#define MADV_SPACEAVAIL 5
#define MADV_FREE 6
#define MAP_INHERIT_SHARE 0
#define MAP_INHERIT_COPY 1
#define MAP_INHERIT_NONE 2
#define MAP_INHERIT_DONATE_COPY 3
#define MAP_INHERIT_ZERO 4
#define MAP_INHERIT_DEFAULT MAP_INHERIT_COPY
#define MFD_CLOEXEC 0x1U
#define MFD_ALLOW_SEALING 0x2U
#define MFD_CLOFORK 0x4U
#endif
#ifndef _KERNEL
#include <sys/cdefs.h>
__BEGIN_DECLS
void * mmap(void *, size_t, int, int, int, off_t);
int munmap(void *, size_t);
int mprotect(void *, size_t, int);
#ifndef __LIBC12_SOURCE__
int msync(void *, size_t, int) __RENAME(__msync13);
#endif
int mlock(const void *, size_t);
int munlock(const void *, size_t);
int mlockall(int);
int munlockall(void);
#if defined(_NETBSD_SOURCE)
int madvise(void *, size_t, int);
int mincore(void *, size_t, char *);
int minherit(void *, size_t, int);
void * mremap(void *, size_t, void *, size_t, int);
int memfd_create(const char *, unsigned int);
#endif
int posix_madvise(void *, size_t, int);
int shm_open(const char *, int, mode_t);
int shm_unlink(const char *);
__END_DECLS
#endif
#endif