| //===-- Definition of macros from sys/mman.h ------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef __LLVM_LIBC_MACROS_LINUX_SYS_MMAN_MACROS_H |
| #define __LLVM_LIBC_MACROS_LINUX_SYS_MMAN_MACROS_H |
| |
| // Memory protection flags. (mmap, munmap, mprotect) |
| #define PROT_NONE 0x0 |
| #define PROT_READ 0x1 |
| #define PROT_WRITE 0x2 |
| #define PROT_EXEC 0x4 |
| // These protection flags are only valid for mprotect. |
| #define PROT_GROWSUP 0x1000000 |
| #define PROT_GROWSDOWN 0x2000000 |
| |
| // Memory mapping flags. (mmap, munmap) |
| #define MAP_FAILED ((void *)-1) |
| // These are the sharing types, and exactly one of these must be set. |
| #define MAP_FILE 0x0 // Compatibility flag. Ignored. |
| #define MAP_SHARED 0x1 |
| #define MAP_PRIVATE 0x2 |
| #define MAP_SHARED_VALIDATE 0x3 |
| // 0x4-0xf are unused. |
| // These are the other flags, and zero or more of these can be set. |
| #define MAP_FIXED 0x10 |
| #define MAP_ANONYMOUS 0x20 |
| #define MAP_ANON MAP_ANONYMOUS |
| #define MAP_32BIT 0x40 |
| // 0x80 is unused. |
| #define MAP_GROWSDOWN 0x100 |
| #define MAP_DENYWRITE 0x800 |
| #define MAP_EXECUTABLE 0x1000 // Compatibility flag. Ignored. |
| #define MAP_LOCKED 0x2000 |
| #define MAP_NORESERVE 0x4000 |
| #define MAP_POPULATE 0x8000 |
| #define MAP_NONBLOCK 0x10000 |
| #define MAP_STACK 0x20000 |
| #define MAP_HUGETLB 0x40000 |
| #define MAP_SYNC 0x80000 |
| #define MAP_FIXED_NOREPLACE 0x100000 |
| // HUGETLB support macros. If ma_HUGHTLB is set, the bits under MAP_HUGE_MASK |
| // represent the base-2 logarithm of the desired page size, and MAP_HUGE_2MB/1GB |
| // are common sizes. |
| #define MAP_HUGE_SHIFT 26 |
| #define MAP_HUGE_MASK 0x3f |
| #define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT) |
| #define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT) |
| |
| // Memory sync flags. (msync) |
| #define MS_ASYNC 1 |
| #define MS_INVALIDATE 2 |
| #define MS_SYNC 4 |
| |
| // Memory advice flags. (madvise) |
| #define MADV_NORMAL 0 |
| #define MADV_RANDOM 1 |
| #define MADV_SEQUENTIAL 2 |
| #define MADV_WILLNEED 3 |
| #define MADV_DONTNEED 4 |
| #define MADV_FREE 8 |
| #define MADV_REMOVE 9 |
| #define MADV_DONTFORK 10 |
| #define MADV_DOFORK 11 |
| #define MADV_MERGEABLE 12 |
| #define MADV_UNMERGEABLE 13 |
| #define MADV_HUGEPAGE 14 |
| #define MADV_NOHUGEPAGE 15 |
| #define MADV_DONTDUMP 16 |
| #define MADV_DODUMP 17 |
| #define MADV_WIPEONFORK 18 |
| #define MADV_KEEPONFORK 19 |
| #define MADV_COLD 20 |
| #define MADV_PAGEOUT 21 |
| #define MADV_HWPOISON 100 |
| |
| // Posix memory advise flags. (posix_madvise) |
| #define POSIX_MADV_NORMAL MADV_NORMAL |
| #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL |
| #define POSIX_MADV_RANDOM MADV_RANDOM |
| #define POSIX_MADV_WILLNEED MADV_WILLNEED |
| #define POSIX_MADV_DONTNEED MADV_DONTNEED |
| |
| #endif // __LLVM_LIBC_MACROS_LINUX_SYS_MMAN_MACROS_H |