151 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /* Definitions for BSD-style memory management.
 | |
|    Copyright (C) 1994-2022 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
 | |
|    <https://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 */
 | 
