Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * This file is subject to the terms and conditions of the GNU General Public
0004  * License.  See the file "COPYING" in the main directory of this archive
0005  * for more details.
0006  *
0007  * Copyright (C) 1995, 1999, 2002 by Ralf Baechle
0008  */
0009 #ifndef _ASM_MMAN_H
0010 #define _ASM_MMAN_H
0011 
0012 /*
0013  * Protections are chosen from these bits, OR'd together.  The
0014  * implementation does not necessarily support PROT_EXEC or PROT_WRITE
0015  * without PROT_READ.  The only guarantees are that no writing will be
0016  * allowed without PROT_WRITE and no access will be allowed for PROT_NONE.
0017  */
0018 #define PROT_NONE   0x00        /* page can not be accessed */
0019 #define PROT_READ   0x01        /* page can be read */
0020 #define PROT_WRITE  0x02        /* page can be written */
0021 #define PROT_EXEC   0x04        /* page can be executed */
0022 /*          0x08           reserved for PROT_EXEC_NOFLUSH */
0023 #define PROT_SEM    0x10        /* page may be used for atomic ops */
0024 #define PROT_GROWSDOWN  0x01000000  /* mprotect flag: extend change to start of growsdown vma */
0025 #define PROT_GROWSUP    0x02000000  /* mprotect flag: extend change to end of growsup vma */
0026 
0027 /*
0028  * Flags for mmap
0029  */
0030 /* 0x01 - 0x03 are defined in linux/mman.h */
0031 #define MAP_TYPE    0x00f       /* Mask for type of mapping */
0032 #define MAP_FIXED   0x010       /* Interpret addr exactly */
0033 
0034 /* not used by linux, but here to make sure we don't clash with ABI defines */
0035 #define MAP_RENAME  0x020       /* Assign page to file */
0036 #define MAP_AUTOGROW    0x040       /* File may grow by writing */
0037 #define MAP_LOCAL   0x080       /* Copy on fork/sproc */
0038 #define MAP_AUTORSRV    0x100       /* Logical swap reserved on demand */
0039 
0040 /* These are linux-specific */
0041 #define MAP_NORESERVE   0x0400      /* don't check for reservations */
0042 #define MAP_ANONYMOUS   0x0800      /* don't use a file */
0043 #define MAP_GROWSDOWN   0x1000      /* stack-like segment */
0044 #define MAP_DENYWRITE   0x2000      /* ETXTBSY */
0045 #define MAP_EXECUTABLE  0x4000      /* mark it as an executable */
0046 #define MAP_LOCKED  0x8000      /* pages are locked */
0047 #define MAP_POPULATE    0x10000     /* populate (prefault) pagetables */
0048 #define MAP_NONBLOCK    0x20000     /* do not block on IO */
0049 #define MAP_STACK   0x40000     /* give out an address that is best suited for process/thread stacks */
0050 #define MAP_HUGETLB 0x80000     /* create a huge page mapping */
0051 #define MAP_FIXED_NOREPLACE 0x100000    /* MAP_FIXED which doesn't unmap underlying mapping */
0052 
0053 /*
0054  * Flags for msync
0055  */
0056 #define MS_ASYNC    0x0001      /* sync memory asynchronously */
0057 #define MS_INVALIDATE   0x0002      /* invalidate mappings & caches */
0058 #define MS_SYNC     0x0004      /* synchronous memory sync */
0059 
0060 /*
0061  * Flags for mlockall
0062  */
0063 #define MCL_CURRENT 1       /* lock all current mappings */
0064 #define MCL_FUTURE  2       /* lock all future mappings */
0065 #define MCL_ONFAULT 4       /* lock all pages that are faulted in */
0066 
0067 /*
0068  * Flags for mlock
0069  */
0070 #define MLOCK_ONFAULT   0x01        /* Lock pages in range after they are faulted in, do not prefault */
0071 
0072 #define MADV_NORMAL 0       /* no further special treatment */
0073 #define MADV_RANDOM 1       /* expect random page references */
0074 #define MADV_SEQUENTIAL 2       /* expect sequential page references */
0075 #define MADV_WILLNEED   3       /* will need these pages */
0076 #define MADV_DONTNEED   4       /* don't need these pages */
0077 
0078 /* common parameters: try to keep these consistent across architectures */
0079 #define MADV_FREE   8       /* free pages only if memory pressure */
0080 #define MADV_REMOVE 9       /* remove these pages & resources */
0081 #define MADV_DONTFORK   10      /* don't inherit across fork */
0082 #define MADV_DOFORK 11      /* do inherit across fork */
0083 
0084 #define MADV_MERGEABLE   12     /* KSM may merge identical pages */
0085 #define MADV_UNMERGEABLE 13     /* KSM may not merge identical pages */
0086 #define MADV_HWPOISON    100        /* poison a page for testing */
0087 
0088 #define MADV_HUGEPAGE   14      /* Worth backing with hugepages */
0089 #define MADV_NOHUGEPAGE 15      /* Not worth backing with hugepages */
0090 
0091 #define MADV_DONTDUMP   16      /* Explicity exclude from the core dump,
0092                        overrides the coredump filter bits */
0093 #define MADV_DODUMP 17      /* Clear the MADV_NODUMP flag */
0094 
0095 #define MADV_WIPEONFORK 18      /* Zero memory on fork, child only */
0096 #define MADV_KEEPONFORK 19      /* Undo MADV_WIPEONFORK */
0097 
0098 #define MADV_COLD   20      /* deactivate these pages */
0099 #define MADV_PAGEOUT    21      /* reclaim these pages */
0100 
0101 #define MADV_POPULATE_READ  22  /* populate (prefault) page tables readable */
0102 #define MADV_POPULATE_WRITE 23  /* populate (prefault) page tables writable */
0103 
0104 #define MADV_DONTNEED_LOCKED    24  /* like DONTNEED, but drop locked pages too */
0105 
0106 /* compatibility flags */
0107 #define MAP_FILE    0
0108 
0109 #define PKEY_DISABLE_ACCESS 0x1
0110 #define PKEY_DISABLE_WRITE  0x2
0111 #define PKEY_ACCESS_MASK    (PKEY_DISABLE_ACCESS |\
0112                  PKEY_DISABLE_WRITE)
0113 
0114 #endif /* _ASM_MMAN_H */