375 lines
16 KiB
HTML
375 lines
16 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta name="generator" content="HTML Tidy, see www.w3.org">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<link type="text/css" rel="stylesheet" href="style.css"><!-- Generated by The Open Group's rhtm tool v1.2.1 -->
|
|
<!-- Copyright (c) 2001 The Open Group, All Rights Reserved -->
|
|
<title><sys/mman.h></title>
|
|
</head>
|
|
<body bgcolor="white">
|
|
<script type="text/javascript" language="JavaScript" src="../../jscript/dotcode.js">
|
|
</script>
|
|
|
|
<basefont size="3"> <a name="<sys/mman.h>"></a> <a name="tag_13_55"></a><!-- <sys/mman.h> -->
|
|
<!--header start-->
|
|
<center><font size="2">The Open Group Base Specifications Issue 6<br>
|
|
IEEE Std 1003.1-2001<br>
|
|
Copyright © 2001 The IEEE and The Open Group, All Rights reserved.</font></center>
|
|
|
|
<!--header end-->
|
|
<hr size="2" noshade>
|
|
<h4><a name="tag_13_55_01"></a>NAME</h4>
|
|
|
|
<blockquote>sys/mman.h - memory management declarations</blockquote>
|
|
|
|
<h4><a name="tag_13_55_02"></a>SYNOPSIS</h4>
|
|
|
|
<blockquote class="synopsis">
|
|
<p><tt>#include <sys/mman.h></tt></p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_03"></a>DESCRIPTION</h4>
|
|
|
|
<blockquote>
|
|
<p>The <i><sys/mman.h></i> header shall be supported if the implementation supports at least one of the following
|
|
options:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('MF')">MF</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
The Memory Mapped Files option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('SHM')">SHM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The Shared Memory Objects option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('ML')">ML</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
The Process Memory Locking option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('MPR')">MPR</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The Memory Protection option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('TYM')">TYM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The Typed Memory Objects option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('SIO')">SIO</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The Synchronized Input and Output option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('ADV')">ADV</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The Advisory Information option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
|
|
<li>
|
|
<p><sup>[<a href="javascript:open_code('TYM')">TYM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The Typed Memory Objects option <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p><sup>[<a href="javascript:open_code('MC2')">MC2</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> 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: <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
|
|
<dl compact>
|
|
<dt>PROT_READ</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MC2')">MC2</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Page can be read. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>PROT_WRITE</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MC2')">MC2</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Page can be written. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>PROT_EXEC</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MC2')">MC2</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Page can be executed. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>PROT_NONE</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MC2')">MC2</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Page cannot be accessed. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
</dl>
|
|
|
|
<p>The following <i>flag</i> options shall be defined:</p>
|
|
|
|
<dl compact>
|
|
<dt>MAP_SHARED</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MF')">MF|SHM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Share changes. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>MAP_PRIVATE</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MF')">MF|SHM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Changes are private. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>MAP_FIXED</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MF')">MF|SHM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Interpret <i>addr</i> exactly. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
</dl>
|
|
|
|
<p>The following flags shall be defined for <a href="../../functions/msync.html"><i>msync</i>()</a>:</p>
|
|
|
|
<dl compact>
|
|
<dt>MS_ASYNC</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MF')">MF|SIO</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Perform asynchronous writes. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>MS_SYNC</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MF')">MF|SIO</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Perform synchronous writes. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>MS_INVALIDATE</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('MF')">MF|SIO</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> Invalidate mappings. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
</dl>
|
|
|
|
<p><sup>[<a href="javascript:open_code('ML')">ML</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
The following symbolic constants shall be defined for the <a href="../../functions/mlockall.html"><i>mlockall</i>()</a> function:
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
|
|
<dl compact>
|
|
<dt>MCL_CURRENT</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('ML')">ML</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
Lock currently mapped pages. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
|
|
<dt>MCL_FUTURE</dt>
|
|
|
|
<dd><sup>[<a href="javascript:open_code('ML')">ML</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
Lock pages that become mapped. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></dd>
|
|
</dl>
|
|
|
|
<p><sup>[<a href="javascript:open_code('MF')">MF|SHM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The symbolic constant MAP_FAILED shall be defined to indicate a failure from the <a href=
|
|
"../../functions/mmap.html"><i>mmap</i>()</a> function. <img src="../../images/opt-end.gif" alt="[Option End]" border="0"></p>
|
|
|
|
<p><sup>[<a href="javascript:open_code('MC1')">MC1</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> If the Advisory Information and either the Memory Mapped Files or Shared Memory Objects options are supported, values for
|
|
<i>advice</i> used by <a href="../../functions/posix_madvise.html"><i>posix_madvise</i>()</a> shall be defined as follows:</p>
|
|
|
|
<dl compact>
|
|
<dt>POSIX_MADV_NORMAL</dt>
|
|
|
|
<dd><br>
|
|
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.</dd>
|
|
|
|
<dt>POSIX_MADV_SEQUENTIAL</dt>
|
|
|
|
<dd><br>
|
|
The application expects to access the specified range sequentially from lower addresses to higher addresses.</dd>
|
|
|
|
<dt>POSIX_MADV_RANDOM</dt>
|
|
|
|
<dd><br>
|
|
The application expects to access the specified range in a random order.</dd>
|
|
|
|
<dt>POSIX_MADV_WILLNEED</dt>
|
|
|
|
<dd><br>
|
|
The application expects to access the specified range in the near future.</dd>
|
|
|
|
<dt>POSIX_MADV_DONTNEED</dt>
|
|
|
|
<dd><br>
|
|
The application expects that it will not access the specified range in the near future.</dd>
|
|
</dl>
|
|
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
|
|
<p><sup>[<a href="javascript:open_code('TYM')">TYM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The following flags shall be defined for <a href=
|
|
"../../functions/posix_typed_mem_open.html"><i>posix_typed_mem_open</i>()</a>:</p>
|
|
|
|
<dl compact>
|
|
<dt>POSIX_TYPED_MEM_ALLOCATE</dt>
|
|
|
|
<dd><br>
|
|
Allocate on <a href="../../functions/mmap.html"><i>mmap</i>()</a>.</dd>
|
|
|
|
<dt>POSIX_TYPED_MEM_ALLOCATE_CONTIG</dt>
|
|
|
|
<dd><br>
|
|
Allocate contiguously on <a href="../../functions/mmap.html"><i>mmap</i>()</a>.</dd>
|
|
|
|
<dt>POSIX_TYPED_MEM_MAP_ALLOCATABLE</dt>
|
|
|
|
<dd><br>
|
|
Map on <a href="../../functions/mmap.html"><i>mmap</i>()</a>, without affecting allocatability.</dd>
|
|
</dl>
|
|
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
|
|
<p>The <b>mode_t</b>, <b>off_t</b>, and <b>size_t</b> types shall be defined as described in <a href=
|
|
"../sys/types.h.html#tag_13_67"><i><sys/types.h></i></a> .</p>
|
|
|
|
<p><sup>[<a href="javascript:open_code('TYM')">TYM</a>]</sup> <img src="../../images/opt-start.gif" alt="[Option Start]" border=
|
|
"0"> The <i><sys/mman.h></i> header shall define the structure <b>posix_typed_mem_info</b>, which includes at least the
|
|
following member:</p>
|
|
|
|
<pre>
|
|
<tt>size_t posix_tmi_length </tt> Maximum length which may be allocated <tt>
|
|
</tt> from a typed memory object. <tt>
|
|
</tt>
|
|
</pre>
|
|
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
|
|
<p>The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided.</p>
|
|
|
|
<pre>
|
|
<tt><sup>[<a href="javascript:open_code('ML')">ML</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int mlock(const void *, size_t);
|
|
int mlockall(int);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('MF')">MF|SHM</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
void *mmap(void *, size_t, int, int, int, off_t);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('MPR')">MPR</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int mprotect(void *, size_t, int);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('MF')">MF|SIO</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int msync(void *, size_t, int);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('ML')">ML</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int munlock(const void *, size_t);
|
|
int munlockall(void);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('MF')">MF|SHM</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int munmap(void *, size_t);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('ADV')">ADV</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int posix_madvise(void *, size_t, int);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('TYM')">TYM</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
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);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
<sup>[<a href="javascript:open_code('SHM')">SHM</a>]</sup><img src="../../images/opt-start.gif" alt="[Option Start]" border="0">
|
|
int shm_open(const char *, int, mode_t);
|
|
int shm_unlink(const char *);
|
|
<img src="../../images/opt-end.gif" alt="[Option End]" border="0">
|
|
</tt>
|
|
</pre>
|
|
</blockquote>
|
|
|
|
<hr>
|
|
<div class="box"><em>The following sections are informative.</em></div>
|
|
|
|
<h4><a name="tag_13_55_04"></a>APPLICATION USAGE</h4>
|
|
|
|
<blockquote>
|
|
<p>None.</p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_05"></a>RATIONALE</h4>
|
|
|
|
<blockquote>
|
|
<p>None.</p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_06"></a>FUTURE DIRECTIONS</h4>
|
|
|
|
<blockquote>
|
|
<p>None.</p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_07"></a>SEE ALSO</h4>
|
|
|
|
<blockquote>
|
|
<p><a href="../sys/types.h.html#tag_13_67"><i><sys/types.h></i></a> , the System Interfaces volume of
|
|
IEEE Std 1003.1-2001, <a href="../../functions/mlock.html"><i>mlock</i>()</a>, <a href=
|
|
"../../functions/mlockall.html"><i>mlockall</i>()</a>, <a href="../../functions/mmap.html"><i>mmap</i>()</a>, <a href=
|
|
"../../functions/mprotect.html"><i>mprotect</i>()</a>, <a href="../../functions/msync.html"><i>msync</i>()</a>, <a href=
|
|
"../../functions/munlock.html"><i>munlock</i>()</a>, <a href="../../functions/munlockall.html"><i>munlockall</i>()</a>, <a href=
|
|
"../../functions/munmap.html"><i>munmap</i>()</a>, <a href="../../functions/posix_mem_offset.html"><i>posix_mem_offset</i>()</a>,
|
|
<a href="../../functions/posix_typed_mem_get_info.html"><i>posix_typed_mem_get_info</i>()</a>, <a href=
|
|
"../../functions/posix_typed_mem_open.html"><i>posix_typed_mem_open</i>()</a>, <a href=
|
|
"../../functions/shm_open.html"><i>shm_open</i>()</a>, <a href="../../functions/shm_unlink.html"><i>shm_unlink</i>()</a></p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_08"></a>CHANGE HISTORY</h4>
|
|
|
|
<blockquote>
|
|
<p>First released in Issue 4, Version 2.</p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_09"></a>Issue 5</h4>
|
|
|
|
<blockquote>
|
|
<p>Updated for alignment with the POSIX Realtime Extension.</p>
|
|
</blockquote>
|
|
|
|
<h4><a name="tag_13_55_10"></a>Issue 6</h4>
|
|
|
|
<blockquote>
|
|
<p>The <i><sys/mman.h></i> header is marked as dependent on support for either the Memory Mapped Files, Process Memory
|
|
Locking, or Shared Memory Objects options.</p>
|
|
|
|
<p>The following changes are made for alignment with IEEE Std 1003.1j-2000:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>The TYM margin code is added to the list of margin codes for the <i><sys/mman.h></i> header line, as well as for other
|
|
lines.</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>The POSIX_TYPED_MEM_ALLOCATE, POSIX_TYPED_MEM_ALLOCATE_CONTIG, and POSIX_TYPED_MEM_MAP_ALLOCATABLE flags are added.</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>The <b>posix_tmi_length</b> structure is added.</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>The <a href="../../functions/posix_mem_offset.html"><i>posix_mem_offset</i>()</a>, <a href=
|
|
"../../functions/posix_typed_mem_get_info.html"><i>posix_typed_mem_get_info</i>()</a>, and <a href=
|
|
"../../functions/posix_typed_mem_open.html"><i>posix_typed_mem_open</i>()</a> functions are added.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>The <b>restrict</b> keyword is added to the prototype for <a href=
|
|
"../../functions/posix_mem_offset.html"><i>posix_mem_offset</i>()</a>.</p>
|
|
|
|
<p>IEEE PASC Interpretation 1003.1 #102 is applied, adding the prototype for <a href=
|
|
"../../functions/posix_madvise.html"><i>posix_madvise</i>()</a>.</p>
|
|
</blockquote>
|
|
|
|
<div class="box"><em>End of informative text.</em></div>
|
|
|
|
<hr>
|
|
<hr size="2" noshade>
|
|
<center><font size="2"><!--footer start-->
|
|
UNIX ® is a registered Trademark of The Open Group.<br>
|
|
POSIX ® is a registered Trademark of The IEEE.<br>
|
|
[ <a href="../../mindex.html">Main Index</a> | <a href="../../basedefs/contents.html">XBD</a> | <a href=
|
|
"../../utilities/contents.html">XCU</a> | <a href="../../functions/contents.html">XSH</a> | <a href=
|
|
"../../xrat/contents.html">XRAT</a> ]</font></center>
|
|
|
|
<!--footer end-->
|
|
<hr size="2" noshade>
|
|
</body>
|
|
</html>
|
|
|