The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> sys/mman.h - memory management declarations

#### SYNOPSIS

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

#### DESCRIPTION

> The <sys/mman.h> header shall be supported if the implementation supports at least one of the following options:

> - [MF] The Memory Mapped Files option

> - [SHM] The Shared Memory Objects option

> - [ML] The Process Memory Locking option

> - [MPR] The Memory Protection option

> - [TYM] The Typed Memory Objects option

> - [SIO] The Synchronized Input and Output option

> - [ADV] The Advisory Information option

> [MC2] If one or more of the Advisory Information, Memory Mapped Files, or Shared Memory Objects options are supported, the following protection options shall be defined:

> PROT_READ
>   [MC2] Page can be read.
> PROT_WRITE
>   [MC2] Page can be written.
> PROT_EXEC
>   [MC2] Page can be executed.
> PROT_NONE
>   [MC2] Page cannot be accessed.

> The following flag options shall be defined:

> MAP_SHARED
>   [MF|SHM] Share changes.
> MAP_PRIVATE
>   [MF|SHM] Changes are private.
> MAP_FIXED
>   [MF|SHM] Interpret addr exactly.

> The following flags shall be defined for msync():

> MS_ASYNC
>   [MF|SIO] Perform asynchronous writes.
> MS_SYNC
>   [MF|SIO] Perform synchronous writes.
> MS_INVALIDATE
>   [MF|SIO] Invalidate mappings.

> [ML] The following symbolic constants shall be defined for the mlockall() function:

> MCL_CURRENT
>   [ML] Lock currently mapped pages.
> MCL_FUTURE
>   [ML] Lock pages that become mapped.

> [MF|SHM] The symbolic constant MAP_FAILED shall be defined to indicate a failure from the mmap() function.

> [MC1] If the Advisory Information and either the Memory Mapped Files or Shared Memory Objects options are supported, values for advice used by posix_madvise() shall be defined as follows:

> POSIX_MADV_NORMAL
>   The application has no advice to give on its behavior with respect to the specified range. It is the default characteristic if no advice is given for a range of memory.
> POSIX_MADV_SEQUENTIAL
>   The application expects to access the specified range sequentially from lower addresses to higher addresses.
> POSIX_MADV_RANDOM
>   The application expects to access the specified range in a random order.
> POSIX_MADV_WILLNEED
>   The application expects to access the specified range in the near future.
> POSIX_MADV_DONTNEED
>   The application expects that it will not access the specified range in the near future.

> [TYM] The following flags shall be defined for posix_typed_mem_open():

> POSIX_TYPED_MEM_ALLOCATE
>   Allocate on mmap().
> POSIX_TYPED_MEM_ALLOCATE_CONTIG
>   Allocate contiguously on mmap().
> POSIX_TYPED_MEM_MAP_ALLOCATABLE
>   Map on mmap(), without affecting allocatability.

> The mode_t, off_t, and size_t types shall be defined as described in <sys/types.h>.

> [TYM] The <sys/mman.h> header shall define the structure posix_typed_mem_info, which includes at least the following member:

>     size_t  posix_tmi_length  Maximum length which may be allocated
>                               from a typed memory object.

> The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided.

>     [MLR]
>     int    mlock(const void *, size_t);

>     [ML]
>     int    mlockall(int);

>     [MC3]
>     void  *mmap(void *, size_t, int, int, int, off_t);

>     [MPR]
>     int    mprotect(void *, size_t, int);

>     [MF|SIO]
>     int    msync(void *, size_t, int);

>     [MLR]
>     int    munlock(const void *, size_t);

>     [ML]
>     int    munlockall(void);

>     [MC3]
>     int    munmap(void *, size_t);

>     [ADV]
>     int    posix_madvise(void *, size_t, int);

>     [TYM]
>     int    posix_mem_offset(const void *restrict, size_t, off_t *restrict,
>                size_t *restrict, int *restrict);
>     int    posix_typed_mem_get_info(int, struct posix_typed_mem_info *);
>     int    posix_typed_mem_open(const char *, int, int);

>     [SHM]
>     int    shm_open(const char *, int, mode_t);
>     int    shm_unlink(const char *);

The following sections are informative.

#### APPLICATION USAGE

> None.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> <sys/types.h>, the System Interfaces volume of IEEE Std 1003.1-2001, mlock(), mlockall(), mmap(), mprotect(), msync(), munlock(), munlockall(), munmap(), posix_mem_offset(), posix_typed_mem_get_info(), posix_typed_mem_open(), shm_open(), shm_unlink()

#### CHANGE HISTORY

> First released in Issue 4, Version 2.

#### Issue 5

> Updated for alignment with the POSIX Realtime Extension.

#### Issue 6

> The <sys/mman.h> header is marked as dependent on support for either the Memory Mapped Files, Process Memory Locking, or Shared Memory Objects options.

> The following changes are made for alignment with IEEE Std 1003.1j-2000:

> - The TYM margin code is added to the list of margin codes for the <sys/mman.h> header line, as well as for other lines.

> - The POSIX_TYPED_MEM_ALLOCATE, POSIX_TYPED_MEM_ALLOCATE_CONTIG, and POSIX_TYPED_MEM_MAP_ALLOCATABLE flags are added.

> - The posix_tmi_length structure is added.

> - The posix_mem_offset(), posix_typed_mem_get_info(), and posix_typed_mem_open() functions are added.

> The restrict keyword is added to the prototype for posix_mem_offset().

> IEEE PASC Interpretation 1003.1 #102 is applied, adding the prototype for posix_madvise().

> IEEE Std 1003.1-2001/Cor 1-2002, item XBD/TC1/D6/16 is applied, correcting margin code and shading errors for the mlock() and munlock() functions.

> IEEE Std 1003.1-2001/Cor 1-2002, item XSH/TC1/D6/34 is applied, changing the margin code for the mmap() function from MF|SHM to MC3 (notation for MF|SHM|TYM).

> IEEE Std 1003.1-2001/Cor 1-2002, item XSH/TC1/D6/36 is applied, changing the margin code for the munmap() function from MF|SHM to MC3 (notation for MF|SHM|TYM).

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]