Wed Feb 14 00:21:17 1996 David Mosberger-Tang <davidm@azstarnet.com>
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / linux / sys / mman.h
index b05738d..3336154 100644 (file)
@@ -17,10 +17,6 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-/* These are the bits used by 4.4 BSD and its derivatives.  On systems
-   (such as GNU) where these facilities are not system services but can be
-   emulated in the C library, these are the definitions we emulate.  */
-
 #ifndef        _SYS_MMAN_H
 
 #define        _SYS_MMAN_H     1
@@ -30,47 +26,17 @@ Cambridge, MA 02139, USA.  */
 #define __need_size_t
 #include <stddef.h>
 
+#include <sys/cdefs.h>
 
-/* Protections are chosen from these bits, OR'd together.  The
-   implementation does not necessarily support PROT_EXEC or PROT_WRITE
-   without PROT_READ.  The only guarantees are that no writing will be
-   allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
-
-#define        PROT_NONE       0x00    /* No access.  */
-#define        PROT_READ       0x01    /* Pages can be read.  */
-#define        PROT_WRITE      0x02    /* Pages can be written.  */
-#define        PROT_EXEC       0x04    /* Pages can be executed.  */
-
-
-/* Flags contain mapping type, sharing type and options.  */
-
-/* Mapping type (must choose one and only one of these).  */
-#define        MAP_FILE        0x0000  /* Mapped from a file or device.  */
-#define        MAP_ANON        0x0020  /* Allocated from anonymous virtual memory.  */
-#define        MAP_TYPE        0x000f  /* Mask for type field.  */
-
-/* Sharing types (must choose one and only one of these).  */
-#define        MAP_COPY        MAP_PRIVATE     /* Virtual copy of region at mapping time.  */
-#define        MAP_SHARED      0x0001  /* Share changes.  */
-#define        MAP_PRIVATE     0x0002  /* Changes private; copy pages on write.  */
-
-/* Other flags.  */
-#define        MAP_FIXED       0x0010  /* Map address must be exactly as requested. */
-#define        MAP_NOEXTEND    0x0000  /* For MAP_FILE, don't change file size.
-                                  Not available on Linux???  */
-#define        MAP_HASSEMPHORE 0x0000  /* Region may contain semaphores.
-                                  Not available on Linux???  */
-#define        MAP_INHERIT     0x0000  /* Region is retained after exec.
-                                  Not available on Linux???  */
-
-/* Advice to `madvise'.  */
-#define        MADV_NORMAL     0       /* No further special treatment.  */
-#define        MADV_RANDOM     1       /* Expect random page references.  */
-#define        MADV_SEQUENTIAL 2       /* Expect sequential page references.  */
-#define        MADV_WILLNEED   3       /* Will need these pages.  */
-#define        MADV_DONTNEED   4       /* Don't need these pages.  */
+/* Get the bit values from the kernel header file.  */
+#include <linux/mman.h>
 
-#include <sys/cdefs.h>
+#ifndef MAP_ANON
+#define MAP_ANON       MAP_ANONYMOUS
+#endif
+#ifndef MAP_FILE
+#define MAP_FILE       0
+#endif
 
 __BEGIN_DECLS
 /* Map addresses starting near ADDR and extending for LEN bytes.  from
@@ -100,12 +66,28 @@ int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  */
-int msync __P ((__caddr_t __addr, size_t __len));
+int msync __P ((__caddr_t __addr, size_t __len, int flags));
 
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
 int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
 
+/* Cause all currently mapped pages of the process to be memory resident
+   until unlocked by a call to the `munlockall', until the process exits,
+   or until the process calls `execve'.  */
+int mlockall __P ((int __flags));
+
+/* All currently mapped pages of the process' address space become
+   unlocked.  */
+int munlockall __P ((void));
+
+/* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to
+   be memory resident.  */
+int mlock __P ((__caddr_t __addr, size_t __len));
+
+/* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN).  */
+int munlock __P ((__caddr_t __addr, size_t __len));
+
 __END_DECLS