Back to index

glibc  2.9
mman.h
Go to the documentation of this file.
00001 /* Flags for BSD-style memory management.  OSF/1 version.
00002    Copyright (C) 1994, 1995, 1996, 1997, 1998 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       _BITS_MMAN_H
00021 #define       _BITS_MMAN_H  1
00022 
00023 /* Protections are chosen from these bits, OR'd together.  The
00024    implementation does not necessarily support PROT_EXEC or PROT_WRITE
00025    without PROT_READ.  The only guarantees are that no writing will be
00026    allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
00027 
00028 #define       PROT_NONE      0x00  /* No access.  */
00029 #define       PROT_READ      0x01  /* Pages can be read.  */
00030 #define       PROT_WRITE     0x02  /* Pages can be written.  */
00031 #define       PROT_EXEC      0x04  /* Pages can be executed.  */
00032 
00033 /* Flags contain mapping type, sharing type and options.  */
00034 
00035 /* Mapping type (must choose one and only one of these).  */
00036 #ifdef __USE_BSD
00037 # define MAP_FILE     0x00  /* Mapped from a file or device.  */
00038 # define MAP_ANON     0x10  /* Allocated from anonymous virtual memory.  */
00039 # define MAP_ANONYMOUS       MAP_ANON
00040 # define MAP_TYPE     0xf0  /* Mask for type field.  */
00041 #endif
00042 
00043 /* Sharing types (must choose one and only one of these).  */
00044 #define       MAP_SHARED     0x01  /* Share changes.  */
00045 #define       MAP_PRIVATE    0x02  /* Changes private; copy pages on write.  */
00046 
00047 /* Other flags.  */
00048 #define       MAP_FIXED      0x0100       /* Map address must be exactly as requested. */
00049 #ifdef __USE_BSD
00050 # define MAP_VARIABLE        0     /* Absence of MAP_FIXED.  */
00051 # define MAP_HASSEMPHORE 0x0200    /* Region may contain semaphores.  */
00052 # define MAP_INHERIT  0x0400       /* Region is retained after exec.  */
00053 # define MAP_UNALIGNED       0x0800       /* File offset need not be page-aligned.  */
00054 #endif
00055 
00056 /* Advice to `madvise'.  */
00057 #ifdef __USE_BSD
00058 # define MADV_NORMAL  0     /* No further special treatment.  */
00059 # define MADV_RANDOM  1     /* Expect random page references.  */
00060 # define MADV_SEQUENTIAL 2  /* Expect sequential page references.  */
00061 # define MADV_WILLNEED       3     /* Will need these pages.  */
00062 # define MADV_DONTNEED       4     /* Don't need these pages.  */
00063 # define MADV_SPACEAVAIL 5  /* Ensure that resources are available.  */
00064 #endif
00065 
00066 /* Flags to `msync'.  */
00067 #define MS_ASYNC     1             /* Asynchronous cache flush.  */
00068 #define MS_SYNC             3             /* Synchronous cache flush.  */
00069 #define MS_INVALIDATE       4             /* Invalidate cached pages.  */
00070 
00071 #endif /* bits/mman.h */