Back to index

glibc  2.9
mman.h
Go to the documentation of this file.
00001 /* Definitions for POSIX memory map interface.  Linux/HPPA version.
00002    Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
00003    This file is part of the GNU C Library.
00004 
00005    The GNU C Library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009 
00010    The GNU C Library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014 
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with the GNU C Library; if not, write to the Free
00017    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018    02111-1307 USA.  */
00019 
00020 #ifndef _SYS_MMAN_H
00021 # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
00022 #endif
00023 
00024 /* These are taken from the kernel definitions.  */
00025 
00026 #define PROT_READ    0x1           /* Page can be read */
00027 #define PROT_WRITE   0x2           /* Page can be written */
00028 #define PROT_EXEC    0x4           /* Page can be executed */
00029 #define PROT_NONE    0x0           /* Page can not be accessed */
00030 #define PROT_GROWSDOWN      0x01000000    /* Extend change to start of
00031                                       growsdown vma (mprotect only).  */
00032 #define PROT_GROWSUP 0x02000000    /* Extend change to start of
00033                                       growsup vma (mprotect only).  */
00034 
00035 #define MAP_SHARED   0x01          /* Share changes */
00036 #define MAP_PRIVATE  0x02          /* Changes are private */
00037 #ifdef __USE_MISC
00038 # define MAP_TYPE    0x03          /* Mask for type of mapping */
00039 #endif
00040 
00041 /* Other flags.  */
00042 #define MAP_FIXED    0x04          /* Interpret addr exactly */
00043 #ifdef __USE_MISC
00044 # define MAP_FILE    0x0
00045 # define MAP_ANONYMOUS      0x10          /* Don't use a file */
00046 # define MAP_ANON    MAP_ANONYMOUS
00047 # define MAP_VARIABLE       0
00048 #endif
00049 
00050 /* These are Linux-specific.  */
00051 #ifdef __USE_MISC
00052 # define MAP_DENYWRITE      0x0800        /* ETXTBSY */
00053 # define MAP_EXECUTABLE     0x1000        /* Mark it as an executable */
00054 # define MAP_LOCKED  0x2000        /* Pages are locked */
00055 # define MAP_NORESERVE      0x4000        /* Don't check for reservations */
00056 # define MAP_GROWSDOWN      0x8000        /* Stack-like segment */
00057 # define MAP_POPULATE       0x10000              /* Populate (prefault) pagetables */
00058 # define MAP_NONBLOCK       0x20000              /* Do not block on IO */
00059 #endif
00060 
00061 /* Flags to "msync"  */
00062 #define MS_SYNC             1             /* Synchronous memory sync */
00063 #define MS_ASYNC     2             /* Sync memory asynchronously */
00064 #define MS_INVALIDATE       4             /* Invalidate the caches */
00065 
00066 /* Flags to "mlockall"  */
00067 #define MCL_CURRENT  1             /* Lock all current mappings */
00068 #define MCL_FUTURE   2             /* Lock all future mappings */
00069 
00070 /* Flags for `mremap'.  */
00071 #ifdef __USE_GNU
00072 # define MREMAP_MAYMOVE 1
00073 # define MREMAP_FIXED       2
00074 #endif
00075 
00076 /* Advice to "madvise"  */
00077 #ifdef __USE_BSD
00078 # define MADV_NORMAL   0    /* No further special treatment */
00079 # define MADV_RANDOM   1    /* Expect random page references */
00080 # define MADV_SEQUENTIAL  2 /* Expect sequential page references */
00081 # define MADV_WILLNEED        3    /* Will need these pages */
00082 # define MADV_DONTNEED        4    /* Dont need these pages */
00083 # define MADV_SPACEAVAIL  5 /* Insure that resources are reserved */
00084 # define MADV_VPS_PURGE       6    /* Purge pages from VM page cache */
00085 # define MADV_VPS_INHERIT 7 /* Inherit parents page size */
00086 # define MADV_REMOVE   9    /* Remove these pages and resources.  */
00087 # define MADV_DONTFORK       10    /* Do not inherit across fork.  */
00088 # define MADV_DOFORK  11    /* Do inherit across fork.  */
00089 #endif
00090 
00091 /* The range 12-64 is reserved for page size specification. */
00092 #define MADV_4K_PAGES   12              /* Use 4K pages  */
00093 #define MADV_16K_PAGES  14              /* Use 16K pages */
00094 #define MADV_64K_PAGES  16              /* Use 64K pages */
00095 #define MADV_256K_PAGES 18              /* Use 256K pages */
00096 #define MADV_1M_PAGES   20              /* Use 1 Megabyte pages */
00097 #define MADV_4M_PAGES   22              /* Use 4 Megabyte pages */
00098 #define MADV_16M_PAGES  24              /* Use 16 Megabyte pages */
00099 #define MADV_64M_PAGES  26              /* Use 64 Megabyte pages */
00100 
00101 /* The POSIX people had to invent similar names for the same things.  */
00102 #ifdef __USE_XOPEN2K
00103 # define POSIX_MADV_NORMAL  0 /* No further special treatment.  */
00104 # define POSIX_MADV_RANDOM  1 /* Expect random page references.  */
00105 # define POSIX_MADV_SEQUENTIAL     2 /* Expect sequential page references.  */
00106 # define POSIX_MADV_WILLNEED       3 /* Will need these pages.  */
00107 # define POSIX_MADV_DONTNEED       4 /* Don't need these pages.  */
00108 #endif