l4re-base-25.08.0

This commit is contained in:
2025-09-12 15:55:45 +02:00
commit d959eaab98
37938 changed files with 9382688 additions and 0 deletions

View File

@@ -0,0 +1,417 @@
<!-- HTML header for doxygen 1.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.15.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>L4Re Operating System Framework: Message Items</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="l4re-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="L4Re_rgb_logo_quer_hg_h55.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">L4Re Operating System Framework
</div>
<div id="projectbrief">Interface and Usage Documentation</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.15.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('group__l4__msgitem__api.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Message Items <div class="ingroups"><a class="el" href="group__l4__api.html">Base API</a> &raquo; <a class="el" href="group__l4__ipc__api.html">Object Invocation</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Message-item-related functionality.
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Message Items:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="group__l4__msgitem__api.svg" width="316" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:l4_5Fsnd_5Ffpage_5Ft" id="r_l4_5Fsnd_5Ffpage_5Ft"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structl4__snd__fpage__t.html">l4_snd_fpage_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send-flexpage types. <a href="structl4__snd__fpage__t.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-enum-members" class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gad142e99a533af52d358f9940fa00966a" id="r_gad142e99a533af52d358f9940fa00966a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gad142e99a533af52d358f9940fa00966a">L4_obj_fpage_ctl</a> { <br />
&#160;&#160;<a class="el" href="#ggad142e99a533af52d358f9940fa00966aae99eaaf78b0f1e2c47aa06bb3ecf75bb">L4_FPAGE_C_REF_CNT</a> = 0x00
, <a class="el" href="#ggad142e99a533af52d358f9940fa00966aa0155a27c030c4f1575bd4ff20a9f6187">L4_FPAGE_C_NO_REF_CNT</a> = 0x10
, <a class="el" href="#ggad142e99a533af52d358f9940fa00966aa6d6eba5513250e9861fe748df4fe0fa5">L4_FPAGE_C_OBJ_RIGHT1</a> = 0x20
, <a class="el" href="#ggad142e99a533af52d358f9940fa00966aa8834856d49119629d22e70cddee41f3e">L4_FPAGE_C_OBJ_RIGHT2</a> = 0x40
, <br />
&#160;&#160;<a class="el" href="#ggad142e99a533af52d358f9940fa00966aa954f8c7a95fbab8ef05831ed866ebe0a">L4_FPAGE_C_OBJ_RIGHT3</a> = 0x80
, <a class="el" href="#ggad142e99a533af52d358f9940fa00966aae690696fb5b770b579e15348503b32ba">L4_FPAGE_C_OBJ_RIGHTS</a> = 0xe0
, <a class="el" href="#ggad142e99a533af52d358f9940fa00966aa8436980325edd409d8aa71e1ef567bc4">L4_FPAGE_C_IPCGATE_SVR</a> = L4_FPAGE_C_OBJ_RIGHT1
<br />
}</td></tr>
<tr class="memdesc:gad142e99a533af52d358f9940fa00966a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attributes and additional permissions for object send items. <a href="#gad142e99a533af52d358f9940fa00966a">More...</a><br /></td></tr>
<tr class="memitem:ga547729eef68ea9c0e085c34a66e133fa" id="r_ga547729eef68ea9c0e085c34a66e133fa"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga547729eef68ea9c0e085c34a66e133fa">l4_fpage_cacheability_opt_t</a> { <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa020b367a4fd713478c5728e30c27be9b">L4_FPAGE_CACHE_OPT</a> = 0x1
, <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa0107b2bd5876b8a3bb3ffb738a22a5aa">L4_FPAGE_CACHEABLE</a> = 0x3
, <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa63cb59df38cd7648ee0163b777cdf84f">L4_FPAGE_BUFFERABLE</a> = 0x5
, <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa5ee8ca3328cbd7da944ffa573baf9d97">L4_FPAGE_UNCACHEABLE</a> = 0x1
}</td></tr>
<tr class="memdesc:ga547729eef68ea9c0e085c34a66e133fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cacheability options for memory send items. <a href="#ga547729eef68ea9c0e085c34a66e133fa">More...</a><br /></td></tr>
<tr class="memitem:ga94ecfe2908867c4ed0c13a7a97337f6a" id="r_ga94ecfe2908867c4ed0c13a7a97337f6a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga94ecfe2908867c4ed0c13a7a97337f6a">l4_msg_item_consts_t</a> { <br />
&#160;&#160;<a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa818a51ad60a66f82775c39c2eb550f4d">L4_ITEM_MAP</a> = 8
, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aac4ea7fecbdc440401bde677de3df051d">L4_ITEM_CONT</a> = 1
, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa390d5fd9efeb212bfbed501498387c9e">L4_MAP_ITEM_GRANT</a> = 2
, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aaca6431510837e32c27f628147ba3c12a">L4_MAP_ITEM_MAP</a> = 0
, <br />
&#160;&#160;<a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa624249a87f6c2461451cc559cb8ae99f">L4_RCV_ITEM_FORWARD_MAPPINGS</a> = 1
, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aaf41c9a3e815dffeb73eef8660392572f">L4_RCV_ITEM_SINGLE_CAP</a> = L4_ITEM_MAP | 2
, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa9ec3db5390483f9f0cd4a4571b04b5be">L4_RCV_ITEM_LOCAL_ID</a> = 4
<br />
}</td></tr>
<tr class="memdesc:ga94ecfe2908867c4ed0c13a7a97337f6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constants for message items. <a href="#ga94ecfe2908867c4ed0c13a7a97337f6a">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga1ce1321fd25614e9af43a35819540ba7" id="r_ga1ce1321fd25614e9af43a35819540ba7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga1ce1321fd25614e9af43a35819540ba7">l4_map_control</a> (<a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> spot, unsigned char cache, unsigned grant) <a class="el" href="group__l4sys__defines.html#ga362dfa378e662dd04f710a23fc7ea931">L4_NOTHROW</a></td></tr>
<tr class="memdesc:ga1ce1321fd25614e9af43a35819540ba7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create the first word for a map item that is a send item for the memory space. <br /></td></tr>
<tr class="memitem:ga6c9056957ac92e458eaabcbf3223ce6f" id="r_ga6c9056957ac92e458eaabcbf3223ce6f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6c9056957ac92e458eaabcbf3223ce6f">l4_map_obj_control</a> (<a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> spot, unsigned grant) <a class="el" href="group__l4sys__defines.html#ga362dfa378e662dd04f710a23fc7ea931">L4_NOTHROW</a></td></tr>
<tr class="memdesc:ga6c9056957ac92e458eaabcbf3223ce6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create the first word for a map item that is a send item for the object space. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>Message-item-related functionality. </p>
<p>Message items are typed items that are used for transferring capabilities during IPC. There are three sub-types of typed message items with variations in the layout:</p>
<ol type="1">
<li>Typed message items set by the sender in its message registers (MRs) of the UTCB for specifying what shall be sent.</li>
<li>Typed message items set by the receiver in its buffer registers (BRs) of the UTCB for specifying which types of capabilities may be received at which addresses.</li>
<li>Typed message items set by the kernel in the receivers message registers (MRs) of the UTCB for providing information about the transfer to the receiver.</li>
</ol>
<p>They are abbreviated by <em>send item</em>, <em>receive item</em>, and <em>return item</em>, respectively.</p>
<p>A typed message item in the message registers (case 1 and case 3) always consists of two words (even if it is a void item). The size of a typed message item in the buffer registers (case 2) is determined by its first word. The size is up to three words (see <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aaf41c9a3e815dffeb73eef8660392572f" title="Mark the receive buffer to be a small receive item that describes a buffer for a single object capabi...">L4_RCV_ITEM_SINGLE_CAP</a> and <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa624249a87f6c2461451cc559cb8ae99f" title="This flag specifies if received capabilities shall be mapped to a particular task instead of the invo...">L4_RCV_ITEM_FORWARD_MAPPINGS</a>). A void item in the buffer registers consists of a single word.</p>
<dl class="section user"><dt>Include File</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="l4_2sys_2types_8h.html">l4/sys/types.h</a>&gt;</span> </div>
<div class="ttc" id="al4_2sys_2types_8h_html"><div class="ttname"><a href="l4_2sys_2types_8h.html">types.h</a></div><div class="ttdoc">Common L4 ABI Data Types.</div></div>
</div><!-- fragment --> </dd></dl>
<a name="doc-enum-members" id="doc-enum-members"></a><h2 id="header-doc-enum-members" class="groupheader">Enumeration Type Documentation</h2>
<a id="ga547729eef68ea9c0e085c34a66e133fa" name="ga547729eef68ea9c0e085c34a66e133fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga547729eef68ea9c0e085c34a66e133fa">&#9670;&#160;</a></span>l4_fpage_cacheability_opt_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="#ga547729eef68ea9c0e085c34a66e133fa">l4_fpage_cacheability_opt_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Cacheability options for memory send items. </p>
<p>Only the IPC sender and the thread performing the map operation can specify the caching mode of the target mapping. By default, the caching mode of the sender is used as caching mode for the target mapping. If L4_FPAGE_CACHE_OPT is set in the send item, the caching mode is overridden by the respective mode from below. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga547729eef68ea9c0e085c34a66e133faa020b367a4fd713478c5728e30c27be9b" name="gga547729eef68ea9c0e085c34a66e133faa020b367a4fd713478c5728e30c27be9b"></a>L4_FPAGE_CACHE_OPT&#160;</td><td class="fielddoc"><p>Enable the cacheability option in a memory send item. </p>
<p>Without this flag, the options are copied from the sender. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga547729eef68ea9c0e085c34a66e133faa0107b2bd5876b8a3bb3ffb738a22a5aa" name="gga547729eef68ea9c0e085c34a66e133faa0107b2bd5876b8a3bb3ffb738a22a5aa"></a>L4_FPAGE_CACHEABLE&#160;</td><td class="fielddoc"><p>Cacheability option to enable caches for the mapping. </p>
<p>Implies <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa020b367a4fd713478c5728e30c27be9b" title="Enable the cacheability option in a memory send item.">L4_FPAGE_CACHE_OPT</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga547729eef68ea9c0e085c34a66e133faa63cb59df38cd7648ee0163b777cdf84f" name="gga547729eef68ea9c0e085c34a66e133faa63cb59df38cd7648ee0163b777cdf84f"></a>L4_FPAGE_BUFFERABLE&#160;</td><td class="fielddoc"><p>Cacheability option to enable buffered writes for the mapping. </p>
<p>Implies <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa020b367a4fd713478c5728e30c27be9b" title="Enable the cacheability option in a memory send item.">L4_FPAGE_CACHE_OPT</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga547729eef68ea9c0e085c34a66e133faa5ee8ca3328cbd7da944ffa573baf9d97" name="gga547729eef68ea9c0e085c34a66e133faa5ee8ca3328cbd7da944ffa573baf9d97"></a>L4_FPAGE_UNCACHEABLE&#160;</td><td class="fielddoc"><p>Cacheability option to disable caching for the mapping. </p>
<p>Implies <a class="el" href="#gga547729eef68ea9c0e085c34a66e133faa020b367a4fd713478c5728e30c27be9b" title="Enable the cacheability option in a memory send item.">L4_FPAGE_CACHE_OPT</a>. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="____l4__fpage_8h_source.html#l00291">291</a> of file <a class="el" href="____l4__fpage_8h_source.html">__l4_fpage.h</a>.</p>
</div>
</div>
<a id="ga94ecfe2908867c4ed0c13a7a97337f6a" name="ga94ecfe2908867c4ed0c13a7a97337f6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga94ecfe2908867c4ed0c13a7a97337f6a">&#9670;&#160;</a></span>l4_msg_item_consts_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="#ga94ecfe2908867c4ed0c13a7a97337f6a">l4_msg_item_consts_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constants for message items. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aa818a51ad60a66f82775c39c2eb550f4d" name="gga94ecfe2908867c4ed0c13a7a97337f6aa818a51ad60a66f82775c39c2eb550f4d"></a>L4_ITEM_MAP&#160;</td><td class="fielddoc"><p>Identify a message item as <em>map</em> <em>item</em>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aac4ea7fecbdc440401bde677de3df051d" name="gga94ecfe2908867c4ed0c13a7a97337f6aac4ea7fecbdc440401bde677de3df051d"></a>L4_ITEM_CONT&#160;</td><td class="fielddoc"><p>Denote that the following item shall be put into the same receive item as this one. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aa390d5fd9efeb212bfbed501498387c9e" name="gga94ecfe2908867c4ed0c13a7a97337f6aa390d5fd9efeb212bfbed501498387c9e"></a>L4_MAP_ITEM_GRANT&#160;</td><td class="fielddoc"><p>Flag as <em>grant</em> instead of <em>map</em> operation. </p>
<p>This means, the sender delegates access to the receiver and the kernel removes the rights from the sender (basically a move operation). The mapping in the receiver gets the new parent of any child mappings of the mapping of the sender. Rights revocation via send item/flexpage is <em>not</em> guaranteed to be applied to descendant mappings in case of grant. See <a class="el" href="l4re_concepts_mapping.html">Spaces and Mappings</a> for more details on map/grant.</p>
<dl class="section note"><dt>Note</dt><dd>The grant operation is not performed if the resulting rights of the receiver mapping would not contain the <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39a1cdb82ad70ed42f63968df2f8ce84bf5" title="Read right for capability flexpages.">L4_CAP_FPAGE_R</a> bit (for object capabilities) or none of the <a class="el" href="group__l4__fpage__api.html#gga5d4f4972d58f72b2a33b6c139b5950a8a371a1fb2c09f17c7eb32ac296b87cf38" title="Read-write-execute flexpage.">L4_FPAGE_RWX</a> bits (memory and IO ports). In that case, the mapping is not created in the receiver space and not removed from the sender space.</dd>
<dd>
If the removal of the whole mapping from the sender is not possible because the size of the mapped frame at the sender exceeds the size defined by the send or receive flexpage, the grant operation is turned into a regular map operation and the mapping is <em>not</em> removed from the sender. This would happen if, for example, a smaller part of an <a class="el" href="namespaceL4.html" title="L4 low-level kernel interface.">L4</a> superpage mapping shall be granted. </dd></dl>
</td></tr>
<tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aaca6431510837e32c27f628147ba3c12a" name="gga94ecfe2908867c4ed0c13a7a97337f6aaca6431510837e32c27f628147ba3c12a"></a>L4_MAP_ITEM_MAP&#160;</td><td class="fielddoc"><p>Flag as usual <em>map</em> operation. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aa624249a87f6c2461451cc559cb8ae99f" name="gga94ecfe2908867c4ed0c13a7a97337f6aa624249a87f6c2461451cc559cb8ae99f"></a>L4_RCV_ITEM_FORWARD_MAPPINGS&#160;</td><td class="fielddoc"><p>This flag specifies if received capabilities shall be mapped to a particular task instead of the invoking task. </p>
<p>This flag may be used only if <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa9ec3db5390483f9f0cd4a4571b04b5be" title="The receiver requests to receive a local ID instead of a mapping whenever possible.">L4_RCV_ITEM_LOCAL_ID</a> is unset.</p>
<p>Setting this flag increases the size of the buffer item by one word. This word is used to specify a capability index for the task that shall receive the mappings. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aaf41c9a3e815dffeb73eef8660392572f" name="gga94ecfe2908867c4ed0c13a7a97337f6aaf41c9a3e815dffeb73eef8660392572f"></a>L4_RCV_ITEM_SINGLE_CAP&#160;</td><td class="fielddoc"><p>Mark the receive buffer to be a small receive item that describes a buffer for a single object capability. </p>
<p>A receive item needs to specify a <em>receive window</em>. The receive window determines which kind of capabilities (object, memory, I/O ports) may be received where in the respective space. If this flag is unset, the receive window is specified in the second word of the receive item via a <a class="el" href="group__l4__fpage__api.html">flexpage</a>. If this flag is set, the receive window consists of a single capability index in the object space and the capability index is specified in the most significant bits of the first word of the receive item (see <a class="el" href="group__l4__cap__api.html#ggafee0421c2fe0e5cfc59f17f16ea10879ac13ad59620aeba353454514a42950a85" title="Capability index shift.">L4_CAP_SHIFT</a>). </p>
</td></tr>
<tr><td class="fieldname"><a id="gga94ecfe2908867c4ed0c13a7a97337f6aa9ec3db5390483f9f0cd4a4571b04b5be" name="gga94ecfe2908867c4ed0c13a7a97337f6aa9ec3db5390483f9f0cd4a4571b04b5be"></a>L4_RCV_ITEM_LOCAL_ID&#160;</td><td class="fielddoc"><p>The receiver requests to receive a local ID instead of a mapping whenever possible. </p>
<p>This flag may be used only if <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aaf41c9a3e815dffeb73eef8660392572f" title="Mark the receive buffer to be a small receive item that describes a buffer for a single object capabi...">L4_RCV_ITEM_SINGLE_CAP</a> is set and <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa624249a87f6c2461451cc559cb8ae99f" title="This flag specifies if received capabilities shall be mapped to a particular task instead of the invo...">L4_RCV_ITEM_FORWARD_MAPPINGS</a> is unset.</p>
<p>When this flag is set, then,</p>
<ul>
<li>when sender and receiver are bound to the same task, then no mapping is done for this item and just the raw flexpage (<a class="el" href="unionl4__fpage__t.html" title="L4 flexpage type.">l4_fpage_t</a>) is transferred,</li>
<li>otherwise, when the sender specified an IPC gate for transfer that is bound to a thread that is bound to the same task as the receiving thread, then no mapping is done for this item and just the bitwise OR (<span class="tt">|</span>) of the label and the <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39a561054fb4021ff4a22ab1881c7a7de5a" title="Interface specific &#39;W&#39; right for capability flexpages.">L4_CAP_FPAGE_W</a> and <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39acb2b2e95f6be245f64937ac48a068066" title="Interface specific &#39;S&#39; right for capability flexpages.">L4_CAP_FPAGE_S</a> permissions that would have been mapped is transferred,</li>
<li>otherwise a regular mapping is done for this item. </li>
</ul>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="l4_2sys_2consts_8h_source.html#l00212">212</a> of file <a class="el" href="l4_2sys_2consts_8h_source.html">consts.h</a>.</p>
</div>
</div>
<a id="gad142e99a533af52d358f9940fa00966a" name="gad142e99a533af52d358f9940fa00966a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad142e99a533af52d358f9940fa00966a">&#9670;&#160;</a></span>L4_obj_fpage_ctl</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="#gad142e99a533af52d358f9940fa00966a">L4_obj_fpage_ctl</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attributes and additional permissions for object send items. </p>
<p>These rights need to be added to the snd_base when mapping and control internal behavior. The exact meaning depends on the type of capability (currently used only with IPC gates). </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aae99eaaf78b0f1e2c47aa06bb3ecf75bb" name="ggad142e99a533af52d358f9940fa00966aae99eaaf78b0f1e2c47aa06bb3ecf75bb"></a>L4_FPAGE_C_REF_CNT&#160;</td><td class="fielddoc"><p>Mapping is reference-counted (default). </p>
</td></tr>
<tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aa0155a27c030c4f1575bd4ff20a9f6187" name="ggad142e99a533af52d358f9940fa00966aa0155a27c030c4f1575bd4ff20a9f6187"></a>L4_FPAGE_C_NO_REF_CNT&#160;</td><td class="fielddoc"><p>Don't increase the reference counter. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aa6d6eba5513250e9861fe748df4fe0fa5" name="ggad142e99a533af52d358f9940fa00966aa6d6eba5513250e9861fe748df4fe0fa5"></a>L4_FPAGE_C_OBJ_RIGHT1&#160;</td><td class="fielddoc"><p>Object-type specific right. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aa8834856d49119629d22e70cddee41f3e" name="ggad142e99a533af52d358f9940fa00966aa8834856d49119629d22e70cddee41f3e"></a>L4_FPAGE_C_OBJ_RIGHT2&#160;</td><td class="fielddoc"><p>Object-type specific right. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aa954f8c7a95fbab8ef05831ed866ebe0a" name="ggad142e99a533af52d358f9940fa00966aa954f8c7a95fbab8ef05831ed866ebe0a"></a>L4_FPAGE_C_OBJ_RIGHT3&#160;</td><td class="fielddoc"><p>Object-type specific right. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aae690696fb5b770b579e15348503b32ba" name="ggad142e99a533af52d358f9940fa00966aae690696fb5b770b579e15348503b32ba"></a>L4_FPAGE_C_OBJ_RIGHTS&#160;</td><td class="fielddoc"><p>All Object-type specific right bits. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggad142e99a533af52d358f9940fa00966aa8436980325edd409d8aa71e1ef567bc4" name="ggad142e99a533af52d358f9940fa00966aa8436980325edd409d8aa71e1ef567bc4"></a>L4_FPAGE_C_IPCGATE_SVR&#160;</td><td class="fielddoc"><p>The receiver may invoke IPC-gate-specific functions on the capability, e.g. </p>
<p>bind a thread to the gate and modify the label. Needed if the receiver implements the server side of an IPC gate. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="____l4__fpage_8h_source.html#l00262">262</a> of file <a class="el" href="____l4__fpage_8h_source.html">__l4_fpage.h</a>.</p>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="ga1ce1321fd25614e9af43a35819540ba7" name="ga1ce1321fd25614e9af43a35819540ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1ce1321fd25614e9af43a35819540ba7">&#9670;&#160;</a></span>l4_map_control()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> l4_map_control </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></td> <td class="paramname"><span class="paramname"><em>spot</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char</td> <td class="paramname"><span class="paramname"><em>cache</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>grant</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create the first word for a map item that is a send item for the memory space. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">spot</td><td>Hot spot address, used to determine what is actually mapped when send and receive flexpage have differing sizes. </td></tr>
<tr><td class="paramname">cache</td><td>Cacheability hints for memory flexpages. See <a class="el" href="#ga547729eef68ea9c0e085c34a66e133fa">Cacheability options</a>. </td></tr>
<tr><td class="paramname">grant</td><td>Indicates if it is a map or a grant item. Allowed values: <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aaca6431510837e32c27f628147ba3c12a" title="Flag as usual map operation.">L4_MAP_ITEM_MAP</a>, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa390d5fd9efeb212bfbed501498387c9e" title="Flag as grant instead of map operation.">L4_MAP_ITEM_GRANT</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value to be used as first word in a send item for memory. </dd></dl>
<p class="definition">Definition at line <a class="el" href="____l4__fpage_8h_source.html#l00742">742</a> of file <a class="el" href="____l4__fpage_8h_source.html">__l4_fpage.h</a>.</p>
<p class="reference">References <a class="el" href="____l4__fpage_8h_source.html#l00250">L4_FPAGE_CONTROL_MASK</a>, <a class="el" href="l4_2sys_2consts_8h_source.html#l00214">L4_ITEM_MAP</a>, and <a class="el" href="compiler_8h_source.html#l00161">L4_NOTHROW</a>.</p>
<p class="reference">Referenced by <a class="el" href="____l4__fpage_8h_source.html#l00749">l4_map_obj_control()</a>.</p>
<div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="group__l4__msgitem__api_ga1ce1321fd25614e9af43a35819540ba7_icgraph.svg" width="960" height="382"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="ga6c9056957ac92e458eaabcbf3223ce6f" name="ga6c9056957ac92e458eaabcbf3223ce6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6c9056957ac92e458eaabcbf3223ce6f">&#9670;&#160;</a></span>l4_map_obj_control()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> l4_map_obj_control </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></td> <td class="paramname"><span class="paramname"><em>spot</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>grant</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create the first word for a map item that is a send item for the object space. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">spot</td><td>Hot spot address, used to determine what is actually mapped when send and receive flexpages have different size. </td></tr>
<tr><td class="paramname">grant</td><td>Indicates if it is a map item or a grant item. Allowed values: <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aaca6431510837e32c27f628147ba3c12a" title="Flag as usual map operation.">L4_MAP_ITEM_MAP</a>, <a class="el" href="#gga94ecfe2908867c4ed0c13a7a97337f6aa390d5fd9efeb212bfbed501498387c9e" title="Flag as grant instead of map operation.">L4_MAP_ITEM_GRANT</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value to be used as first word in a send item for kernel objects or IO-ports. </dd></dl>
<p class="definition">Definition at line <a class="el" href="____l4__fpage_8h_source.html#l00749">749</a> of file <a class="el" href="____l4__fpage_8h_source.html">__l4_fpage.h</a>.</p>
<p class="reference">References <a class="el" href="____l4__fpage_8h_source.html#l00742">l4_map_control()</a>, and <a class="el" href="compiler_8h_source.html#l00161">L4_NOTHROW</a>.</p>
<p class="reference">Referenced by <a class="el" href="icu_8h_source.html#l00396">l4_icu_bind_u()</a>, <a class="el" href="icu_8h_source.html#l00408">l4_icu_unbind_u()</a>, <a class="el" href="l4_2sys_2irq_8h_source.html#l00250">l4_irq_bind_vcpu_u()</a>, and <a class="el" href="capability_8h_source.html#l00086">L4::Cap_base::snd_base()</a>.</p>
<div id="dynsection-2" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="group__l4__msgitem__api_ga6c9056957ac92e458eaabcbf3223ce6f_cgraph.svg" width="331" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-3" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="group__l4__msgitem__api_ga6c9056957ac92e458eaabcbf3223ce6f_icgraph.svg" width="790" height="382"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- HTML footer for doxygen 1.9.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on <span class="timestamp"></span> for L4Re Operating System Framework by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.15.0 </li>
</ul>
</div>
</body>
</html>