 f14fb60209
			
		
	
	
		f14fb60209
		
	
	
	
	
		
			
			* Updating common/lib * Updating lib/csu * Updating lib/libc * Updating libexec/ld.elf_so * Corrected test on __minix in featuretest to actually follow the meaning of the comment. * Cleaned up _REENTRANT-related defintions. * Disabled -D_REENTRANT for libfetch * Removing some unneeded __NBSD_LIBC defines and tests Change-Id: Ic1394baef74d11b9f86b312f5ff4bbc3cbf72ce2
		
			
				
	
	
		
			300 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			300 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: mmap.2,v 1.47 2012/01/05 15:19:52 reinoud Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\"	@(#)mmap.2	8.4 (Berkeley) 5/11/95
 | |
| .\"
 | |
| .Dd December 20, 2011
 | |
| .Dt MMAP 2
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm mmap
 | |
| .Nd map files or devices into memory
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In sys/mman.h
 | |
| .Ft void *
 | |
| .Fn mmap "void *addr" "size_t len" "int prot" "int flags" "int fd" "off_t offset"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm mmap
 | |
| function causes the pages starting at
 | |
| .Fa addr
 | |
| and continuing for at most
 | |
| .Fa len
 | |
| bytes to be mapped from the object described by
 | |
| .Fa fd ,
 | |
| starting at byte offset
 | |
| .Fa offset .
 | |
| If
 | |
| .Fa len
 | |
| is not a multiple of the pagesize, the mapped region may extend past the
 | |
| specified range.
 | |
| Any such extension beyond the end of the mapped object will be zero-filled.
 | |
| .Pp
 | |
| If
 | |
| .Fa addr
 | |
| is non-zero, it is used as a hint to the system.
 | |
| (As a convenience to the system, the actual address of the region may differ
 | |
| from the address supplied.)
 | |
| If
 | |
| .Fa addr
 | |
| is zero, an address will be selected by the system.
 | |
| The actual starting address of the region is returned.
 | |
| A successful
 | |
| .Fa mmap
 | |
| deletes any previous mapping in the allocated address range.
 | |
| .Pp
 | |
| The protections (region accessibility) are specified in the
 | |
| .Fa prot
 | |
| argument by
 | |
| .Em OR Ns 'ing
 | |
| the following values:
 | |
| .Pp
 | |
| .Bl -tag -width PROT_WRITEXX -offset indent
 | |
| .It Dv PROT_EXEC
 | |
| Pages may be executed.
 | |
| .It Dv PROT_READ
 | |
| Pages may be read.
 | |
| .It Dv PROT_WRITE
 | |
| Pages may be written.
 | |
| .It Dv PROT_NONE
 | |
| Pages may not be accessed.
 | |
| .El
 | |
| .Pp
 | |
| .Bf -symbolic
 | |
| Note that, due to hardware limitations, on some platforms
 | |
| .Dv PROT_WRITE
 | |
| may imply
 | |
| .Dv PROT_READ ,
 | |
| and
 | |
| .Dv PROT_READ
 | |
| may imply
 | |
| .Dv PROT_EXEC .
 | |
| Portable programs should not rely on these flags being separately
 | |
| enforceable.
 | |
| .Ef
 | |
| .Pp
 | |
| The
 | |
| .Fa flags
 | |
| parameter specifies the type of the mapped object, mapping options and
 | |
| whether modifications made to the mapped copy of the page are private
 | |
| to the process or are to be shared with other references.
 | |
| Note that either
 | |
| .Dv MAP_SHARED
 | |
| or
 | |
| .Dv MAP_PRIVATE
 | |
| must be specified.
 | |
| Sharing, mapping type and options are specified in the
 | |
| .Fa flags
 | |
| argument by
 | |
| .Em OR Ns 'ing
 | |
| the following values:
 | |
| .Pp
 | |
| .Bl -tag -width MAP_HASSEMAPHOREXX -offset indent
 | |
| .It Dv MAP_ALIGNED(n)
 | |
| Request that the allocation be aligned to the given boundary.
 | |
| The parameter
 | |
| .Ar n
 | |
| should be the base 2 logarithm of the desired alignment (e.g., to
 | |
| request alignment to 16K, use 14 as the value for n).
 | |
| The alignment must be equal to or greater than the platform's page
 | |
| size as returned by
 | |
| .Xr sysconf 3
 | |
| with the
 | |
| .Dv _SC_PAGESIZE
 | |
| request.
 | |
| .It Dv MAP_ANON
 | |
| Map anonymous memory not associated with any specific file.
 | |
| The file descriptor is not used for creating
 | |
| .Dv MAP_ANON
 | |
| regions, and must be specified as \-1.
 | |
| The mapped memory will be zero filled.
 | |
| .It Dv MAP_FILE
 | |
| Mapped from a regular file or character-special device memory.
 | |
| .It Dv MAP_FIXED
 | |
| Do not permit the system to select a different address than the one
 | |
| specified.
 | |
| If the specified address cannot be used,
 | |
| .Nm mmap
 | |
| will fail.
 | |
| If MAP_FIXED is specified,
 | |
| .Fa addr
 | |
| must be a multiple of the pagesize.
 | |
| Use of this option is discouraged.
 | |
| .It Dv MAP_HASSEMAPHORE
 | |
| Notify the kernel that the region may contain semaphores and that special
 | |
| handling may be necessary.
 | |
| .It Dv MAP_INHERIT
 | |
| Permit regions to be inherited across
 | |
| .Xr execve 2
 | |
| system calls.
 | |
| .It Dv MAP_TRYFIXED
 | |
| Attempt to use the address
 | |
| .Fa addr
 | |
| even if it falls within the normally protected process data or
 | |
| text segment memory regions.
 | |
| If the requested region of memory
 | |
| is actually present in the memory map, a different address will
 | |
| be selected as if
 | |
| .Dv MAP_TRYFIXED
 | |
| had not been specified.
 | |
| If
 | |
| .Fa addr
 | |
| is
 | |
| .Fa NULL ,
 | |
| this flag is ignored and the system will select a mapping address.
 | |
| .It Dv MAP_WIRED
 | |
| Lock the mapped region into memory as with
 | |
| .Xr mlock 2 .
 | |
| .It Dv MAP_PRIVATE
 | |
| Modifications made by this process are private, however modifications made by
 | |
| other processes using
 | |
| .Dv MAP_SHARED
 | |
| will be seen.
 | |
| .It Dv MAP_SHARED
 | |
| Modifications are shared.
 | |
| .El
 | |
| .Pp
 | |
| The
 | |
| .Xr close 2
 | |
| function does not unmap pages, see
 | |
| .Xr munmap 2
 | |
| for further information.
 | |
| .Pp
 | |
| The current design does not allow a process to specify the location of
 | |
| swap space.
 | |
| In the future we may define an additional mapping type,
 | |
| .Dv MAP_SWAP ,
 | |
| in which
 | |
| the file descriptor argument specifies a file or device to which swapping
 | |
| should be done.
 | |
| .Pp
 | |
| If
 | |
| .Dv MAP_FIXED
 | |
| is not specified, the system will attempt to place the mapping in an
 | |
| unused portion of the address space chosen to minimize possible
 | |
| collision between mapped regions and the heap.
 | |
| .Sh RETURN VALUES
 | |
| Upon successful completion,
 | |
| .Nm mmap
 | |
| returns a pointer to the mapped region.
 | |
| Otherwise, a value of
 | |
| .Dv MAP_FAILED
 | |
| is returned and
 | |
| .Va errno
 | |
| is set to indicate the error.
 | |
| The symbol
 | |
| .Dv MAP_FAILED
 | |
| is defined in the header
 | |
| .Ao Pa sys/mman.h Ac .
 | |
| No successful return from
 | |
| .Fn mmap
 | |
| will return the value
 | |
| .Dv MAP_FAILED .
 | |
| .Sh ERRORS
 | |
| .Fn mmap
 | |
| will fail if:
 | |
| .Bl -tag -width Er
 | |
| .It Bq Er EACCES
 | |
| The flag
 | |
| .Dv PROT_READ
 | |
| was specified as part of the
 | |
| .Fa prot
 | |
| parameter and
 | |
| .Fa fd
 | |
| was not open for reading.
 | |
| The flags
 | |
| .Dv MAP_SHARED
 | |
| and
 | |
| .Dv PROT_WRITE
 | |
| were specified as part of the
 | |
| .Fa flags
 | |
| and
 | |
| .Fa prot
 | |
| parameters and
 | |
| .Fa fd
 | |
| was not open for writing.
 | |
| .It Bq Er EBADF
 | |
| .Fa fd
 | |
| is not a valid open file descriptor.
 | |
| .It Bq Er EINVAL
 | |
| .\"One of
 | |
| .\".Dv MAP_ANON
 | |
| .\"or
 | |
| .\".Dv MAP_FILE
 | |
| .\"was not specified as part of the
 | |
| .\".Fa flags
 | |
| .\"parameter.
 | |
| .Dv MAP_FIXED
 | |
| was specified and the
 | |
| .Fa addr
 | |
| parameter was not page aligned or was outside of the
 | |
| valid address range for a process.
 | |
| .Dv MAP_ANON was specified and
 | |
| .Fa fd
 | |
| was not \-1.
 | |
| .It Bq Er ENODEV
 | |
| .Fa fd
 | |
| did not reference a regular or character special file.
 | |
| .It Bq Er ENOMEM
 | |
| .Dv MAP_FIXED
 | |
| was specified and the
 | |
| .Fa addr
 | |
| parameter wasn't available.
 | |
| .Dv MAP_ANON
 | |
| was specified and insufficient memory was available.
 | |
| .It Bq Er EOVERFLOW
 | |
| .Fa fd
 | |
| references a regular file and the value of
 | |
| .Fa offset
 | |
| plus
 | |
| .Fa len
 | |
| would exceed the offset maximum established in its open file description.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr madvise 2 ,
 | |
| .Xr mincore 2 ,
 | |
| .Xr mlock 2 ,
 | |
| .Xr mprotect 2 ,
 | |
| .Xr msync 2 ,
 | |
| .Xr munmap 2 ,
 | |
| .Xr getpagesize 3 ,
 | |
| .Xr sysconf 3
 | |
| .Sh STANDARDS
 | |
| The
 | |
| .Fn mmap
 | |
| function conforms to
 | |
| .St -p1003.1b-93 .
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn mmap
 | |
| interface was first designed in
 | |
| .Bx 4.2 .
 |