1*53ee8cc1Swenshuai.xi /* Definitions for POSIX memory map interface. Linux/MIPS version. 2*53ee8cc1Swenshuai.xi Copyright (C) 1997, 2000, 2003, 2004, 2005, 2006 3*53ee8cc1Swenshuai.xi Free Software Foundation, Inc. 4*53ee8cc1Swenshuai.xi This file is part of the GNU C Library. 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi The GNU C Library is free software; you can redistribute it and/or 7*53ee8cc1Swenshuai.xi modify it under the terms of the GNU Lesser General Public 8*53ee8cc1Swenshuai.xi License as published by the Free Software Foundation; either 9*53ee8cc1Swenshuai.xi version 2.1 of the License, or (at your option) any later version. 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi The GNU C Library is distributed in the hope that it will be useful, 12*53ee8cc1Swenshuai.xi but WITHOUT ANY WARRANTY; without even the implied warranty of 13*53ee8cc1Swenshuai.xi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*53ee8cc1Swenshuai.xi Lesser General Public License for more details. 15*53ee8cc1Swenshuai.xi 16*53ee8cc1Swenshuai.xi You should have received a copy of the GNU Lesser General Public 17*53ee8cc1Swenshuai.xi License along with the GNU C Library; if not, write to the Free 18*53ee8cc1Swenshuai.xi Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 19*53ee8cc1Swenshuai.xi 02111-1307 USA. */ 20*53ee8cc1Swenshuai.xi 21*53ee8cc1Swenshuai.xi #ifndef _SYS_MMAN_H 22*53ee8cc1Swenshuai.xi # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead." 23*53ee8cc1Swenshuai.xi #endif 24*53ee8cc1Swenshuai.xi 25*53ee8cc1Swenshuai.xi /* The following definitions basically come from the kernel headers. 26*53ee8cc1Swenshuai.xi But the kernel header is not namespace clean. */ 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi 29*53ee8cc1Swenshuai.xi /* Protections are chosen from these bits, OR'd together. The 30*53ee8cc1Swenshuai.xi implementation does not necessarily support PROT_EXEC or PROT_WRITE 31*53ee8cc1Swenshuai.xi without PROT_READ. The only guarantees are that no writing will be 32*53ee8cc1Swenshuai.xi allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xi #define PROT_READ 0x1 /* Page can be read. */ 35*53ee8cc1Swenshuai.xi #define PROT_WRITE 0x2 /* Page can be written. */ 36*53ee8cc1Swenshuai.xi #define PROT_EXEC 0x4 /* Page can be executed. */ 37*53ee8cc1Swenshuai.xi #define PROT_NONE 0x0 /* Page can not be accessed. */ 38*53ee8cc1Swenshuai.xi #define PROT_GROWSDOWN 0x01000000 /* Extend change to start of 39*53ee8cc1Swenshuai.xi growsdown vma (mprotect only). */ 40*53ee8cc1Swenshuai.xi #define PROT_GROWSUP 0x02000000 /* Extend change to start of 41*53ee8cc1Swenshuai.xi growsup vma (mprotect only). */ 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi /* Sharing types (must choose one and only one of these). */ 44*53ee8cc1Swenshuai.xi #define MAP_SHARED 0x01 /* Share changes. */ 45*53ee8cc1Swenshuai.xi #define MAP_PRIVATE 0x02 /* Changes are private. */ 46*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 47*53ee8cc1Swenshuai.xi # define MAP_TYPE 0x0f /* Mask for type of mapping. */ 48*53ee8cc1Swenshuai.xi #endif 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi /* Other flags. */ 51*53ee8cc1Swenshuai.xi #define MAP_FIXED 0x10 /* Interpret addr exactly. */ 52*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 53*53ee8cc1Swenshuai.xi # define MAP_FILE 0 54*53ee8cc1Swenshuai.xi # define MAP_ANONYMOUS 0x0800 /* Don't use a file. */ 55*53ee8cc1Swenshuai.xi # define MAP_ANON MAP_ANONYMOUS 56*53ee8cc1Swenshuai.xi # define MAP_RENAME MAP_ANONYMOUS 57*53ee8cc1Swenshuai.xi #endif 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xi /* These are Linux-specific. */ 60*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 61*53ee8cc1Swenshuai.xi # define MAP_NORESERVE 0x0400 /* don't check for reservations */ 62*53ee8cc1Swenshuai.xi # define MAP_ANONYMOUS 0x0800 /* don't use a file */ 63*53ee8cc1Swenshuai.xi # define MAP_GROWSDOWN 0x1000 /* stack-like segment */ 64*53ee8cc1Swenshuai.xi # define MAP_DENYWRITE 0x2000 /* ETXTBSY */ 65*53ee8cc1Swenshuai.xi # define MAP_EXECUTABLE 0x4000 /* mark it as an executable */ 66*53ee8cc1Swenshuai.xi # define MAP_LOCKED 0x8000 /* pages are locked */ 67*53ee8cc1Swenshuai.xi # define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */ 68*53ee8cc1Swenshuai.xi # define MAP_NONBLOCK 0x20000 /* do not block on IO */ 69*53ee8cc1Swenshuai.xi #endif 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi /* Flags to `msync'. */ 72*53ee8cc1Swenshuai.xi #define MS_ASYNC 1 /* Sync memory asynchronously. */ 73*53ee8cc1Swenshuai.xi #define MS_SYNC 4 /* Synchronous memory sync. */ 74*53ee8cc1Swenshuai.xi #define MS_INVALIDATE 2 /* Invalidate the caches. */ 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi /* Flags for `mlockall'. */ 77*53ee8cc1Swenshuai.xi #define MCL_CURRENT 1 /* Lock all currently mapped pages. */ 78*53ee8cc1Swenshuai.xi #define MCL_FUTURE 2 /* Lock all additions to address 79*53ee8cc1Swenshuai.xi space. */ 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi /* Flags for `mremap'. */ 82*53ee8cc1Swenshuai.xi #ifdef __USE_GNU 83*53ee8cc1Swenshuai.xi # define MREMAP_MAYMOVE 1 84*53ee8cc1Swenshuai.xi # define MREMAP_FIXED 2 85*53ee8cc1Swenshuai.xi #endif 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi /* Advice to `madvise'. */ 88*53ee8cc1Swenshuai.xi #ifdef __USE_BSD 89*53ee8cc1Swenshuai.xi # define MADV_NORMAL 0 /* No further special treatment. */ 90*53ee8cc1Swenshuai.xi # define MADV_RANDOM 1 /* Expect random page references. */ 91*53ee8cc1Swenshuai.xi # define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ 92*53ee8cc1Swenshuai.xi # define MADV_WILLNEED 3 /* Will need these pages. */ 93*53ee8cc1Swenshuai.xi # define MADV_DONTNEED 4 /* Don't need these pages. */ 94*53ee8cc1Swenshuai.xi # define MADV_REMOVE 9 /* Remove these pages and resources. */ 95*53ee8cc1Swenshuai.xi # define MADV_DONTFORK 10 /* Do not inherit across fork. */ 96*53ee8cc1Swenshuai.xi # define MADV_DOFORK 11 /* Do inherit across fork. */ 97*53ee8cc1Swenshuai.xi #endif 98*53ee8cc1Swenshuai.xi 99*53ee8cc1Swenshuai.xi /* The POSIX people had to invent similar names for the same things. */ 100*53ee8cc1Swenshuai.xi #ifdef __USE_XOPEN2K 101*53ee8cc1Swenshuai.xi # define POSIX_MADV_NORMAL 0 /* No further special treatment. */ 102*53ee8cc1Swenshuai.xi # define POSIX_MADV_RANDOM 1 /* Expect random page references. */ 103*53ee8cc1Swenshuai.xi # define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ 104*53ee8cc1Swenshuai.xi # define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ 105*53ee8cc1Swenshuai.xi # define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ 106*53ee8cc1Swenshuai.xi #endif 107