*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> mmap (2)              
Title
Content
Arch
Section
 

MMAP(2)

Contents


NAME    [Toc]    [Back]

     mmap - map files or devices into memory

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <sys/mman.h>

     void *
     mmap(void *addr, size_t len, int prot, int  flags,  int  fd,
off_t offset);

DESCRIPTION    [Toc]    [Back]

     The mmap function causes the pages starting at addr and continuing for at
     most len bytes to be mapped from the object described by fd,
starting at
     byte  offset  offset.  If offset or len is not a multiple of
the pagesize,
     the mapped region may extend past the specified range.

     If 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 addr is zero, an address will  be
selected by
     the  system.   The  actual starting address of the region is
returned.  A
     successful mmap deletes any previous mapping in the allocated address
     range.

     The  protections (region accessibility) are specified in the
prot argument
     by OR'ing the following values:

           PROT_EXEC     Pages may be executed.
           PROT_READ     Pages may be read.
           PROT_WRITE    Pages may be written.
           PROT_NONE     No permissions.

     The 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.  Sharing,
  mapping  type,  and options are specified in the flags
argument by
     OR'ing the following values:

     MAP_ANON    Map anonymous memory  not  associated  with  any
specific file.
                 The  file  descriptor used for creating MAP_ANON
must currently
                 be -1 indicating no name is associated with  the
region.

     MAP_FILE     Mapped from a regular file or character-special
device memory.
  (This is the default mapping type, and need
not be specified.)


     MAP_FIXED    Do  not permit the system to select a different
address than
                 the one specified.   If  the  specified  address
cannot be used,
                 mmap will fail.  If MAP_FIXED is specified, addr
must be a
                 multiple of the pagesize.  Use of this option is
discouraged.

     MAP_HASSEMAPHORE
                 Notify  the  kernel  that the region may contain
semaphores and
                 that special handling may be necessary.

     MAP_INHERIT
                 Permit regions to be  inherited  across  exec(3)
system calls.

     MAP_PRIVATE
                 Modifications are private.

     MAP_SHARED  Modifications are shared.

     MAP_COPY     Modifications  are private and, unlike MAP_PRIVATE, modifications
 made by others are not visible.  This  option is deprecated,
  shouldn't  be used and behaves just like
MAP_PRIVATE in
                 the current implementation.

     The close(2) function does not unmap  pages;  see  munmap(2)
for further information.


     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,
     MAP_SWAP,  in which the file descriptor argument specifies a
file or device
 to which swapping should be done.

RETURN VALUES    [Toc]    [Back]

     Upon successful completion, mmap returns a  pointer  to  the
mapped region.
     Otherwise,  a  value  of MAP_FAILED is returned and errno is
set to indicate
     the error.  The symbol MAP_FAILED is defined in  the  header
<sys/mman.h>.
     No  successful  return  from  mmap()  will  return the value
MAP_FAILED.

ERRORS    [Toc]    [Back]

     mmap() will fail if:

     [EACCES]      The flag PROT_READ was specified  as  part  of
the prot parameter
  and  fd  was  not open for reading.  The
flags MAP_SHARED
                   and PROT_WRITE were specified as part  of  the
flags and prot
                   parameters and fd was not open for writing.

     [EBADF]       fd is not a valid open file descriptor.

     [EINVAL]      MAP_FIXED was specified and the addr parameter
was not page
                   aligned.  fd did not reference  a  regular  or
character special
 file.

     [ENOMEM]      MAP_FIXED was specified and the addr parameter
wasn't
                   available.  MAP_ANON was specified and  insufficient memory
                   was available.

SEE ALSO    [Toc]    [Back]

      
      
     madvise(2),  mincore(2),  mlock(2),  mprotect(2),  msync(2),
munmap(2),
     getpagesize(3)

BUGS    [Toc]    [Back]

     Due to a limitation of the current vm system  (see  uvm(9)),
mapping descriptors
  PROT_WRITE  without  also specifying PROT_READ is
useless (results
 in a segmentation fault when first accessing the  mapping).  This
     means  that  such  descriptors  must  be opened with O_RDWR,
which requires
     both read and write permissions on the underlying object.

OpenBSD      3.6                           June      4,      1993
[ Back ]
 Similar pages
Name OS Title
mmap FreeBSD allocate memory, or map files or devices into memory
mmap Linux map or unmap files or devices into memory
inl OpenBSD Alpha devices I/O ports and memory access functions
unmap_memory OpenBSD Alpha devices I/O ports and memory access functions
readw OpenBSD Alpha devices I/O ports and memory access functions
readl OpenBSD Alpha devices I/O ports and memory access functions
inw OpenBSD Alpha devices I/O ports and memory access functions
readb OpenBSD Alpha devices I/O ports and memory access functions
outw OpenBSD Alpha devices I/O ports and memory access functions
inb OpenBSD Alpha devices I/O ports and memory access functions
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service