Move all files into ports/ subdirectory in preparation for merge with glibc
[jlayton/glibc.git] / ports / sysdeps / unix / sysv / linux / hppa / bits / mman.h
1 /* Definitions for POSIX memory map interface.  Linux/HPPA version.
2    Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library.  If not, see
17    <http://www.gnu.org/licenses/>.  */
18
19 #ifndef _SYS_MMAN_H
20 # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
21 #endif
22
23 /* These are taken from the kernel definitions.  */
24
25 #define PROT_READ       0x1             /* Page can be read */
26 #define PROT_WRITE      0x2             /* Page can be written */
27 #define PROT_EXEC       0x4             /* Page can be executed */
28 #define PROT_NONE       0x0             /* Page can not be accessed */
29 #define PROT_GROWSDOWN  0x01000000      /* Extend change to start of
30                                            growsdown vma (mprotect only).  */
31 #define PROT_GROWSUP    0x02000000      /* Extend change to start of
32                                            growsup vma (mprotect only).  */
33
34 #define MAP_SHARED      0x01            /* Share changes */
35 #define MAP_PRIVATE     0x02            /* Changes are private */
36 #ifdef __USE_MISC
37 # define MAP_TYPE       0x03            /* Mask for type of mapping */
38 #endif
39
40 /* Other flags.  */
41 #define MAP_FIXED       0x04            /* Interpret addr exactly */
42 #ifdef __USE_MISC
43 # define MAP_FILE       0x0
44 # define MAP_ANONYMOUS  0x10            /* Don't use a file */
45 # define MAP_ANON       MAP_ANONYMOUS
46 # define MAP_VARIABLE   0
47 #endif
48
49 /* These are Linux-specific.  */
50 #ifdef __USE_MISC
51 # define MAP_DENYWRITE  0x0800          /* ETXTBSY */
52 # define MAP_EXECUTABLE 0x1000          /* Mark it as an executable */
53 # define MAP_LOCKED     0x2000          /* Pages are locked */
54 # define MAP_NORESERVE  0x4000          /* Don't check for reservations */
55 # define MAP_GROWSDOWN  0x8000          /* Stack-like segment */
56 # define MAP_POPULATE   0x10000         /* Populate (prefault) pagetables */
57 # define MAP_NONBLOCK   0x20000         /* Do not block on IO */
58 #endif
59
60 /* Flags to "msync"  */
61 #define MS_SYNC         1               /* Synchronous memory sync */
62 #define MS_ASYNC        2               /* Sync memory asynchronously */
63 #define MS_INVALIDATE   4               /* Invalidate the caches */
64
65 /* Flags to "mlockall"  */
66 #define MCL_CURRENT     1               /* Lock all current mappings */
67 #define MCL_FUTURE      2               /* Lock all future mappings */
68
69 /* Flags for `mremap'.  */
70 #ifdef __USE_GNU
71 # define MREMAP_MAYMOVE 1
72 # define MREMAP_FIXED   2
73 #endif
74
75 /* Advice to "madvise"  */
76 #ifdef __USE_BSD
77 # define MADV_NORMAL      0     /* No further special treatment */
78 # define MADV_RANDOM      1     /* Expect random page references */
79 # define MADV_SEQUENTIAL  2     /* Expect sequential page references */
80 # define MADV_WILLNEED    3     /* Will need these pages */
81 # define MADV_DONTNEED    4     /* Dont need these pages */
82 # define MADV_SPACEAVAIL  5     /* Insure that resources are reserved */
83 # define MADV_VPS_PURGE   6     /* Purge pages from VM page cache */
84 # define MADV_VPS_INHERIT 7     /* Inherit parents page size */
85 # define MADV_REMOVE      9     /* Remove these pages and resources.  */
86 # define MADV_DONTFORK   10     /* Do not inherit across fork.  */
87 # define MADV_DOFORK     11     /* Do inherit across fork.  */
88 # define MADV_MERGEABLE   65    /* KSM may merge identical pages */
89 # define MADV_UNMERGEABLE 66    /* KSM may not merge identical pages */
90 #endif
91
92 /* The range 12-64 is reserved for page size specification. */
93 #define MADV_4K_PAGES   12              /* Use 4K pages  */
94 #define MADV_16K_PAGES  14              /* Use 16K pages */
95 #define MADV_64K_PAGES  16              /* Use 64K pages */
96 #define MADV_256K_PAGES 18              /* Use 256K pages */
97 #define MADV_1M_PAGES   20              /* Use 1 Megabyte pages */
98 #define MADV_4M_PAGES   22              /* Use 4 Megabyte pages */
99 #define MADV_16M_PAGES  24              /* Use 16 Megabyte pages */
100 #define MADV_64M_PAGES  26              /* Use 64 Megabyte pages */
101
102 /* The POSIX people had to invent similar names for the same things.  */
103 #ifdef __USE_XOPEN2K
104 # define POSIX_MADV_NORMAL      0 /* No further special treatment.  */
105 # define POSIX_MADV_RANDOM      1 /* Expect random page references.  */
106 # define POSIX_MADV_SEQUENTIAL  2 /* Expect sequential page references.  */
107 # define POSIX_MADV_WILLNEED    3 /* Will need these pages.  */
108 # define POSIX_MADV_DONTNEED    4 /* Don't need these pages.  */
109 #endif