| /* Definitions for BSD-style memory management. | 
 |    Copyright (C) 1994-2016 Free Software Foundation, Inc. | 
 |    This file is part of the GNU C Library. | 
 |  | 
 |    The GNU C Library is free software; you can redistribute it and/or | 
 |    modify it under the terms of the GNU Lesser General Public | 
 |    License as published by the Free Software Foundation; either | 
 |    version 2.1 of the License, or (at your option) any later version. | 
 |  | 
 |    The GNU C Library is distributed in the hope that it will be useful, | 
 |    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |    Lesser General Public License for more details. | 
 |  | 
 |    You should have received a copy of the GNU Lesser General Public | 
 |    License along with the GNU C Library; if not, see | 
 |    <http://www.gnu.org/licenses/>.  */ | 
 |  | 
 | #ifndef	_SYS_MMAN_H | 
 | #define	_SYS_MMAN_H	1 | 
 |  | 
 | #include <features.h> | 
 | #include <bits/types.h> | 
 | #define __need_size_t | 
 | #include <stddef.h> | 
 |  | 
 | #ifndef __off_t_defined | 
 | # ifndef __USE_FILE_OFFSET64 | 
 | typedef __off_t off_t; | 
 | # else | 
 | typedef __off64_t off_t; | 
 | # endif | 
 | # define __off_t_defined | 
 | #endif | 
 |  | 
 | #ifndef __mode_t_defined | 
 | typedef __mode_t mode_t; | 
 | # define __mode_t_defined | 
 | #endif | 
 |  | 
 | #include <bits/mman.h> | 
 |  | 
 | /* Return value of `mmap' in case of an error.  */ | 
 | #define MAP_FAILED	((void *) -1) | 
 |  | 
 | __BEGIN_DECLS | 
 | /* Map addresses starting near ADDR and extending for LEN bytes.  from | 
 |    OFFSET into the file FD describes according to PROT and FLAGS.  If ADDR | 
 |    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is | 
 |    set in FLAGS, the mapping will be at ADDR exactly (which must be | 
 |    page-aligned); otherwise the system chooses a convenient nearby address. | 
 |    The return value is the actual mapping address chosen or MAP_FAILED | 
 |    for errors (in which case `errno' is set).  A successful `mmap' call | 
 |    deallocates any previous mapping for the affected region.  */ | 
 |  | 
 | #ifndef __USE_FILE_OFFSET64 | 
 | extern void *mmap (void *__addr, size_t __len, int __prot, | 
 | 		   int __flags, int __fd, __off_t __offset) __THROW; | 
 | #else | 
 | # ifdef __REDIRECT_NTH | 
 | extern void * __REDIRECT_NTH (mmap, | 
 | 			      (void *__addr, size_t __len, int __prot, | 
 | 			       int __flags, int __fd, __off64_t __offset), | 
 | 			      mmap64); | 
 | # else | 
 | #  define mmap mmap64 | 
 | # endif | 
 | #endif | 
 | #ifdef __USE_LARGEFILE64 | 
 | extern void *mmap64 (void *__addr, size_t __len, int __prot, | 
 | 		     int __flags, int __fd, __off64_t __offset) __THROW; | 
 | #endif | 
 |  | 
 | /* Deallocate any mapping for the region starting at ADDR and extending LEN | 
 |    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */ | 
 | extern int munmap (void *__addr, size_t __len) __THROW; | 
 |  | 
 | /* Change the memory protection of the region starting at ADDR and | 
 |    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors | 
 |    (and sets errno).  */ | 
 | extern int mprotect (void *__addr, size_t __len, int __prot) __THROW; | 
 |  | 
 | /* 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.  Flags are from the MS_* set. | 
 |  | 
 |    This function is a cancellation point and therefore not marked with | 
 |    __THROW.  */ | 
 | extern int msync (void *__addr, size_t __len, int __flags); | 
 |  | 
 | #ifdef __USE_MISC | 
 | /* Advise the system about particular usage patterns the program follows | 
 |    for the region starting at ADDR and extending LEN bytes.  */ | 
 | extern int madvise (void *__addr, size_t __len, int __advice) __THROW; | 
 | #endif | 
 | #ifdef __USE_XOPEN2K | 
 | /* This is the POSIX name for this function.  */ | 
 | extern int posix_madvise (void *__addr, size_t __len, int __advice) __THROW; | 
 | #endif | 
 |  | 
 | /* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to | 
 |    be memory resident.  */ | 
 | extern int mlock (const void *__addr, size_t __len) __THROW; | 
 |  | 
 | /* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN).  */ | 
 | extern int munlock (const void *__addr, size_t __len) __THROW; | 
 |  | 
 | /* 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'.  */ | 
 | extern int mlockall (int __flags) __THROW; | 
 |  | 
 | /* All currently mapped pages of the process' address space become | 
 |    unlocked.  */ | 
 | extern int munlockall (void) __THROW; | 
 |  | 
 | #ifdef __USE_MISC | 
 | /* mincore returns the memory residency status of the pages in the | 
 |    current process's address space specified by [start, start + len). | 
 |    The status is returned in a vector of bytes.  The least significant | 
 |    bit of each byte is 1 if the referenced page is in memory, otherwise | 
 |    it is zero.  */ | 
 | extern int mincore (void *__start, size_t __len, unsigned char *__vec) | 
 |      __THROW; | 
 | #endif | 
 |  | 
 | #ifdef __USE_GNU | 
 | /* Remap pages mapped by the range [ADDR,ADDR+OLD_LEN) to new length | 
 |    NEW_LEN.  If MREMAP_MAYMOVE is set in FLAGS the returned address | 
 |    may differ from ADDR.  If MREMAP_FIXED is set in FLAGS the function | 
 |    takes another parameter which is a fixed address at which the block | 
 |    resides after a successful call.  */ | 
 | extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, | 
 | 		     int __flags, ...) __THROW; | 
 |  | 
 | /* Remap arbitrary pages of a shared backing store within an existing | 
 |    VMA.  */ | 
 | extern int remap_file_pages (void *__start, size_t __size, int __prot, | 
 | 			     size_t __pgoff, int __flags) __THROW; | 
 | #endif | 
 |  | 
 |  | 
 | /* Open shared memory segment.  */ | 
 | extern int shm_open (const char *__name, int __oflag, mode_t __mode); | 
 |  | 
 | /* Remove shared memory segment.  */ | 
 | extern int shm_unlink (const char *__name); | 
 |  | 
 | __END_DECLS | 
 |  | 
 | #endif	/* sys/mman.h */ |