| /** |
| * D header file for GNU/Linux |
| * |
| * Authors: Martin Nowak |
| */ |
| module core.sys.linux.sys.mman; |
| |
| version (linux): |
| extern (C): |
| nothrow: |
| @nogc: |
| |
| version (ARM) version = ARM_Any; |
| version (AArch64) version = ARM_Any; |
| version (HPPA) version = HPPA_Any; |
| version (HPPA64) version = HPPA_Any; |
| version (MIPS32) version = MIPS_Any; |
| version (MIPS64) version = MIPS_Any; |
| version (PPC) version = PPC_Any; |
| version (PPC64) version = PPC_Any; |
| version (RISCV32) version = RISCV_Any; |
| version (RISCV64) version = RISCV_Any; |
| version (S390) version = IBMZ_Any; |
| version (SPARC) version = SPARC_Any; |
| version (SPARC64) version = SPARC_Any; |
| version (SystemZ) version = IBMZ_Any; |
| version (X86) version = X86_Any; |
| version (X86_64) version = X86_Any; |
| |
| public import core.sys.posix.sys.mman; |
| import core.sys.linux.config; |
| |
| // <bits/mman.h> |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/mman.h |
| version (PPC_Any) |
| { |
| enum PROT_SAO = 0x10; |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x00080, |
| MAP_NORESERVE = 0x00040, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MCL_CURRENT = 0x2000, |
| // MCL_FUTURE = 0x4000, |
| // } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/riscv/bits/mman.h |
| else version (RISCV_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| MAP_SYNC = 0x80000, |
| MAP_FIXED_NOREPLACE = 0x100000, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MCL_CURRENT = 0x2000, |
| // MCL_FUTURE = 0x4000, |
| // } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/mman.h |
| else version (IBMZ_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sh/bits/mman.h |
| else version (SH) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x0100, |
| MAP_DENYWRITE = 0x0800, |
| MAP_EXECUTABLE = 0x1000, |
| MAP_LOCKED = 0x2000, |
| MAP_NORESERVE = 0x4000, |
| MAP_POPULATE = 0x8000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h |
| else version (SPARC_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x0200, |
| MAP_DENYWRITE = 0x0800, |
| MAP_EXECUTABLE = 0x1000, |
| MAP_LOCKED = 0x0100, |
| MAP_NORESERVE = 0x0040, |
| _MAP_NEW = 0x80000000, |
| MAP_POPULATE = 0x8000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MCL_CURRENT = 0x2000, |
| // MCL_FUTURE = 0x4000, |
| // } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/mman.h |
| else version (X86_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum MAP_32BIT = 0x40; |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/bits/mman.h |
| else version (AArch64) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/alpha/bits/mman.h |
| else version (Alpha) |
| { |
| enum |
| { |
| PROT_READ = 0x1, |
| PROT_WRITE = 0x2, |
| PROT_EXEC = 0x4, |
| PROT_NONE = 0x0, |
| PROT_GROWSDOWN = 0x01000000, |
| PROT_GROWSUP = 0x02000000, |
| } |
| |
| enum MAP_SHARED = 0x01; |
| enum MAP_PRIVATE = 0x02; |
| static if (_DEFAULT_SOURCE) |
| enum MAP_TYPE = 0x0f; |
| |
| enum MAP_FIXED = 0x10; |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_FILE = 0, |
| MAP_ANONYMOUS = MAP_ANON, |
| // in core.sys.posix.sys.mman |
| // MAP_ANON = MAP_ANONYMOUS, |
| MAP_HUGE_SHIFT = 26, |
| MAP_HUGE_MASK = 0x3f, |
| } |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x01000, |
| MAP_DENYWRITE = 0x02000, |
| MAP_EXECUTABLE = 0x04000, |
| MAP_LOCKED = 0x08000, |
| MAP_NORESERVE = 0x10000, |
| MAP_POPULATE = 0x20000, |
| MAP_NONBLOCK = 0x40000, |
| MAP_STACK = 0x80000, |
| MAP_HUGETLB = 0x100000, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MS_ASYNC = 1, |
| // MS_SYNC = 2, |
| // MS_INVALIDATE = 4, |
| // } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MCL_CURRENT = 8192, |
| // MCL_FUTURE = 16384, |
| // } |
| |
| static if (_GNU_SOURCE) enum |
| { |
| MREMAP_MAYMOVE = 1, |
| MREMAP_FIXED = 2, |
| } |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MADV_NORMAL = 0, |
| MADV_RANDOM = 1, |
| MADV_SEQUENTIAL = 2, |
| MADV_WILLNEED = 3, |
| MADV_DONTNEED = 6, |
| MADV_REMOVE = 9, |
| MADV_DONTFORK = 10, |
| MADV_DOFORK = 11, |
| MADV_MERGEABLE = 12, |
| MADV_UNMERGEABLE = 13, |
| MADV_HUGEPAGE = 14, |
| MADV_NOHUGEPAGE = 15, |
| MADV_DONTDUMP = 16, |
| MADV_DODUMP = 17, |
| MADV_HWPOISON = 100, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // static if (_XOPEN_SOURCE >= 600) enum |
| // { |
| // POSIX_MADV_NORMAL = 0, |
| // POSIX_MADV_RANDOM = 1, |
| // POSIX_MADV_SEQUENTIAL = 2, |
| // POSIX_MADV_WILLNEED = 3, |
| // POSIX_MADV_DONTNEED = 6, |
| // } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/arm/bits/mman.h |
| else version (ARM) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/hppa/bits/mman.h |
| else version (HPPA_Any) |
| { |
| enum |
| { |
| PROT_READ = 0x1, |
| PROT_WRITE = 0x2, |
| PROT_EXEC = 0x4, |
| PROT_NONE = 0x0, |
| PROT_GROWSDOWN = 0x01000000, |
| PROT_GROWSUP = 0x02000000, |
| } |
| |
| enum MAP_SHARED = 0x01; |
| enum MAP_PRIVATE = 0x02; |
| static if (_DEFAULT_SOURCE) |
| enum MAP_TYPE = 0x0f; |
| |
| enum MAP_FIXED = 0x04; |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_FILE = 0, |
| MAP_ANONYMOUS = MAP_ANON, |
| // in core.sys.posix.sys.mman |
| // MAP_ANON = MAP_ANONYMOUS, |
| MAP_VARIABLE = 0, |
| MAP_HUGE_SHIFT = 26, |
| MAP_HUGE_MASK = 0x3f, |
| } |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_DENYWRITE = 0x0800, |
| MAP_EXECUTABLE = 0x1000, |
| MAP_LOCKED = 0x2000, |
| MAP_NORESERVE = 0x4000, |
| MAP_GROWSDOWN = 0x8000, |
| MAP_POPULATE = 0x10000, |
| MAP_NONBLOCK = 0x20000, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MS_ASYNC = 1, |
| // MS_SYNC = 2, |
| // MS_INVALIDATE = 4, |
| // } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MCL_CURRENT = 1, |
| // MCL_FUTURE = 2, |
| // } |
| |
| static if (_GNU_SOURCE) enum |
| { |
| MREMAP_MAYMOVE = 1, |
| MREMAP_FIXED = 2, |
| } |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MADV_NORMAL = 0, |
| MADV_RANDOM = 1, |
| MADV_SEQUENTIAL = 2, |
| MADV_WILLNEED = 3, |
| MADV_DONTNEED = 4, |
| MADV_SPACEAVAIL = 5, |
| MADV_VPS_PURGE = 6, |
| MADV_VPS_INHERIT = 7, |
| MADV_REMOVE = 9, |
| MADV_DONTFORK = 10, |
| MADV_DOFORK = 11, |
| MADV_MERGEABLE = 65, |
| MADV_UNMERGEABLE = 66, |
| MADV_HUGEPAGE = 67, |
| MADV_NOHUGEPAGE = 68, |
| MADV_DONTDUMP = 69, |
| } |
| |
| deprecated("MADV_*_PAGES are gone and never had any effect") enum |
| { |
| MADV_4K_PAGES = 12, |
| MADV_16K_PAGES = 14, |
| MADV_64K_PAGES = 16, |
| MADV_256K_PAGES = 18, |
| MADV_1M_PAGES = 20, |
| MADV_4M_PAGES = 22, |
| MADV_16M_PAGES = 24, |
| MADV_64M_PAGES = 26, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // static if (_XOPEN_SOURCE >= 600) enum |
| // { |
| // POSIX_MADV_NORMAL = 0, |
| // POSIX_MADV_RANDOM = 1, |
| // POSIX_MADV_SEQUENTIAL = 2, |
| // POSIX_MADV_WILLNEED = 3, |
| // POSIX_MADV_DONTNEED = 4, |
| // } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/ia64/bits/mman.h |
| else version (IA64) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_GROWSUP = 0x00200, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/m68k/bits/mman.h |
| else version (M68K) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/mips/bits/mman.h |
| else version (MIPS_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_NORESERVE = 0x0400, |
| MAP_GROWSDOWN = 0x1000, |
| MAP_DENYWRITE = 0x2000, |
| MAP_EXECUTABLE = 0x4000, |
| MAP_LOCKED = 0x8000, |
| MAP_POPULATE = 0x10000, |
| MAP_NONBLOCK = 0x20000, |
| MAP_STACK = 0x40000, |
| MAP_HUGETLB = 0x80000, |
| } |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/bits/mman-map-flags-generic.h |
| else version (LoongArch64) |
| { |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_GROWSDOWN = 0x00100, |
| MAP_DENYWRITE = 0x00800, |
| MAP_EXECUTABLE = 0x01000, |
| MAP_LOCKED = 0x02000, |
| MAP_NORESERVE = 0x04000, |
| MAP_POPULATE = 0x08000, |
| MAP_NONBLOCK = 0x10000, |
| MAP_STACK = 0x20000, |
| MAP_HUGETLB = 0x40000, |
| MAP_SYNC = 0x80000, |
| MAP_FIXED_NOREPLACE = 0x100000, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MCL_CURRENT = 0x1, |
| // MCL_FUTURE = 0x2, |
| // } |
| } |
| else |
| { |
| static assert(0, "unimplemented"); |
| } |
| |
| |
| // <bits/mman-linux.h> |
| // https://sourceware.org/git/?p=glibc.git;a=blob;f=bits/mman-linux.h |
| version (Alpha) |
| { |
| } |
| else version (HPPA_Any) |
| { |
| } |
| else |
| { |
| // in core.sys.posix.sys.mman |
| // enum PROT_READ = 0x1; |
| // enum PROT_WRITE = 0x2; |
| // enum PROT_EXEC = 0x4; |
| // enum PROT_NONE = 0x0; |
| |
| enum PROT_GROWSDOWN = 0x01000000; |
| enum PROT_GROWSUP = 0x02000000; |
| |
| enum MAP_SHARED = 0x01; |
| enum MAP_PRIVATE = 0x02; |
| static if (_DEFAULT_SOURCE) |
| enum MAP_TYPE = 0x0f; |
| |
| enum MAP_FIXED = 0x10; |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MAP_FILE = 0, |
| MAP_ANONYMOUS = MAP_ANON, |
| // in core.sys.posix.sys.mman |
| // MAP_ANON = 0xXX, |
| MAP_HUGE_SHIFT = 26, |
| MAP_HUGE_MASK = 0x3f, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // MS_ASYNC = 1, |
| // MS_SYNC = 4, |
| // MS_INVALIDATE = 2, |
| // } |
| |
| static if (_GNU_SOURCE) enum |
| { |
| MREMAP_MAYMOVE = 1, |
| MREMAP_FIXED = 2, |
| } |
| |
| static if (_DEFAULT_SOURCE) enum |
| { |
| MADV_NORMAL = 0, |
| MADV_RANDOM = 1, |
| MADV_SEQUENTIAL = 2, |
| MADV_WILLNEED = 3, |
| MADV_DONTNEED = 4, |
| MADV_REMOVE = 9, |
| MADV_DONTFORK = 10, |
| MADV_DOFORK = 11, |
| MADV_MERGEABLE = 12, |
| MADV_UNMERGEABLE = 13, |
| MADV_HUGEPAGE = 14, |
| MADV_NOHUGEPAGE = 15, |
| MADV_DONTDUMP = 16, |
| MADV_DODUMP = 17, |
| MADV_HWPOISON = 100, |
| } |
| |
| // in core.sys.posix.sys.mman |
| // static if (_XOPEN_SOURCE >= 600) enum |
| // { |
| // POSIX_MADV_NORMAL = 0, |
| // POSIX_MADV_RANDOM = 1, |
| // POSIX_MADV_SEQUENTIAL = 2, |
| // POSIX_MADV_WILLNEED = 3, |
| // POSIX_MADV_DONTNEED = 4, |
| // } |
| |
| // in core.sys.posix.sys.mman |
| // enum |
| // { |
| // |
| // MCL_CURRENT = 1, |
| // MCL_FUTURE = 2, |
| // } |
| } |
| |
| // Workaround https://issues.dlang.org/show_bug.cgi?id=17883 |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h |
| version (SPARC_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum MAP_RENAME = MAP_ANONYMOUS; |
| } |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/mips/bits/mman.h |
| else version (MIPS_Any) |
| { |
| static if (_DEFAULT_SOURCE) enum MAP_RENAME = MAP_ANONYMOUS; |
| } |
| |
| // http://sourceware.org/git/?p=glibc.git;a=blob;f=misc/sys/mman.h |
| // in core.sys.posix.sys.mman |
| // static if (__USE_LARGEFILE64) void* mmap64(void*, size_t, int, int, int, off_t); |
| // static if (__USE_FILE_OFFSET64) |
| // alias mmap64 mmap; |
| // else |
| // void* mmap(void*, size_t, int, int, int, off_t); |
| // int munmap(void*, size_t); |
| // int mprotect(void *__addr, size_t __len, int __prot); |
| // int msync(void *__addr, size_t __len, int __flags); |
| static if (_DEFAULT_SOURCE) int madvise(void *__addr, size_t __len, int __advice); |
| // static if (_XOPEN_SOURCE >= 600) int posix_madvise(void *__addr, size_t __len, int __advice); |
| // int mlock(const(void) *__addr, size_t __len); |
| // int munlock(const(void) *__addr, size_t __len); |
| // int mlockall(int __flags); |
| // int munlockall(); |
| static if (_DEFAULT_SOURCE) int mincore(void *__start, size_t __len, ubyte *__vec); |
| static if (_GNU_SOURCE) void *mremap(void *__addr, size_t __old_len, size_t __new_len, int __flags, ...); |
| static if (_GNU_SOURCE) int remap_file_pages(void *__start, size_t __size, int __prot, size_t __pgoff, int __flags); |
| // int shm_open(in char *__name, int __oflag, mode_t __mode); |
| // int shm_unlink(in char *__name); |