Files
moslab-code/doc/source/html/classRm.html
2025-09-12 15:55:45 +02:00

1060 lines
85 KiB
HTML

<!-- 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: Rm Class Reference</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('classRm.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">Rm Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="structRm_1_1Region.html" title="A region is a range of virtual addresses which is backed by content.">Region</a> map.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="rm_source.html">l4/re/rm</a>&gt;</code></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>Inheritance diagram for Rm:</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="classRm__inherit__graph.svg" width="487" height="1006"><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-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for Rm:</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="classRm__coll__graph.svg" width="487" height="1006"><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:F" id="r_F"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structRm_1_1F.html">F</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classRm.html" title="Region map.">Rm</a> flags definitions. <a href="structRm_1_1F.html#details">More...</a><br /></td></tr>
<tr class="memitem:Unique_5Fregion" id="r_Unique_5Fregion"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRm_1_1Unique__region.html">Unique_region</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unique region. <a href="classRm_1_1Unique__region.html#details">More...</a><br /></td></tr>
<tr class="memitem:Region" id="r_Region"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structRm_1_1Region.html">Region</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A region is a range of virtual addresses which is backed by content. <a href="structRm_1_1Region.html#details">More...</a><br /></td></tr>
<tr class="memitem:Area" id="r_Area"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structRm_1_1Area.html">Area</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An area is a range of virtual addresses which is reserved, see <a class="el" href="classL4Re_1_1Rm.html#ad1a4be565f4767dfce5e16d7d5e855c3" title="Reserve the given area in the region map.">L4Re::Rm::reserve_area()</a>. <a href="structRm_1_1Area.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-types" class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a43a67efc09d07fb2b0ed559184d4a883" id="r_a43a67efc09d07fb2b0ed559184d4a883"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a43a67efc09d07fb2b0ed559184d4a883">Detach_result</a> { <a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883a06735050c90071a6d5bf1f1f6c49d0e3">Detached_ds</a> = 0
, <a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883aad57a531f2f6d146ed4c18c889005763">Kept_ds</a> = 1
, <a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883aa327a69d4932e571c19e48ad5b81d9de">Split_ds</a> = 2
, <b>Detach_result_mask</b> = 3
, <a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883a52152fd07767300856c5248edc1a5101">Detach_again</a> = 4
}</td></tr>
<tr class="memdesc:a43a67efc09d07fb2b0ed559184d4a883"><td class="mdescLeft">&#160;</td><td class="mdescRight">Result values for detach operation. <a href="#a43a67efc09d07fb2b0ed559184d4a883">More...</a><br /></td></tr>
<tr class="memitem:a6c519437e7be883723e43f80ea42ce87" id="r_a6c519437e7be883723e43f80ea42ce87"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6c519437e7be883723e43f80ea42ce87">Region_flag_shifts</a> { <a class="el" href="classL4Re_1_1Rm.html#a6c519437e7be883723e43f80ea42ce87aac2055075c855e3496dfcaa5060358e9">Caching_shift</a> = Dataspace::F::Caching_shift
}</td></tr>
<tr class="memdesc:a6c519437e7be883723e43f80ea42ce87"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structRm_1_1Region.html" title="A region is a range of virtual addresses which is backed by content.">Region</a> flag shifts. <a href="#a6c519437e7be883723e43f80ea42ce87">More...</a><br /></td></tr>
<tr class="memitem:ab2016b6baa0393491c0cc3ab97eff3af" id="r_ab2016b6baa0393491c0cc3ab97eff3af"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab2016b6baa0393491c0cc3ab97eff3af">Detach_flags</a> { <a class="el" href="classL4Re_1_1Rm.html#ab2016b6baa0393491c0cc3ab97eff3afa6d989d18bdfabb32dcd6e75081a43e4a">Detach_exact</a> = 1
, <a class="el" href="classL4Re_1_1Rm.html#ab2016b6baa0393491c0cc3ab97eff3afa4a6ddedb3fb0cfd350dd3abc7ccdf2e3">Detach_overlap</a> = 2
, <a class="el" href="classL4Re_1_1Rm.html#ab2016b6baa0393491c0cc3ab97eff3afaa259dcd6b4ae942c89166285379d09af">Detach_keep</a> = 4
}</td></tr>
<tr class="memdesc:ab2016b6baa0393491c0cc3ab97eff3af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags for detach operation. <a href="#ab2016b6baa0393491c0cc3ab97eff3af">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad1a4be565f4767dfce5e16d7d5e855c3" id="r_ad1a4be565f4767dfce5e16d7d5e855c3"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad1a4be565f4767dfce5e16d7d5e855c3">reserve_area</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *start, unsigned long size, Flags flags=Flags(0), unsigned char align=<a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a>) const noexcept</td></tr>
<tr class="memdesc:ad1a4be565f4767dfce5e16d7d5e855c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserve the given area in the region map. <br /></td></tr>
<tr class="memitem:a48756bf96d7afde63c8b15adbfd30a38" id="r_a48756bf96d7afde63c8b15adbfd30a38"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a48756bf96d7afde63c8b15adbfd30a38 template"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a48756bf96d7afde63c8b15adbfd30a38">reserve_area</a> (T **start, unsigned long size, Flags flags=Flags(0), unsigned char align=<a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a>) const noexcept</td></tr>
<tr class="memdesc:a48756bf96d7afde63c8b15adbfd30a38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserve the given area in the region map. <br /></td></tr>
<tr class="memitem:a3165a1f7521b5ec58cd710654575f6bb" id="r_a3165a1f7521b5ec58cd710654575f6bb"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3165a1f7521b5ec58cd710654575f6bb">free_area</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> addr)</td></tr>
<tr class="memdesc:a3165a1f7521b5ec58cd710654575f6bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free an area from the region map. <br /></td></tr>
<tr class="memitem:aec840ef6586b29cc0c3efa182c0c4ea0" id="r_aec840ef6586b29cc0c3efa182c0c4ea0"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aec840ef6586b29cc0c3efa182c0c4ea0">attach</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *start, unsigned long size, Flags flags, <a class="el" href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap</a>&lt; Dataspace &gt; mem, Offset offs=0, unsigned char align=<a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a>, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const task=<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt;::Invalid, char const *name=nullptr, Offset backing_offset=0) const noexcept</td></tr>
<tr class="memdesc:aec840ef6586b29cc0c3efa182c0c4ea0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach a data space to a region. <br /></td></tr>
<tr class="memitem:a6466401aebc6df3c0c14992610228f83" id="r_a6466401aebc6df3c0c14992610228f83"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a6466401aebc6df3c0c14992610228f83 template"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6466401aebc6df3c0c14992610228f83">attach</a> (T **start, unsigned long size, Flags flags, <a class="el" href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap</a>&lt; Dataspace &gt; mem, Offset offs=0, unsigned char align=<a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a>, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const task=<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt;::Invalid, char const *name=nullptr, Offset backing_offset=0) const noexcept</td></tr>
<tr class="memdesc:a6466401aebc6df3c0c14992610228f83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach a data space to a region. <br /></td></tr>
<tr class="memitem:af4ad2b5650cb44bff10c217220def4c9" id="r_af4ad2b5650cb44bff10c217220def4c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af4ad2b5650cb44bff10c217220def4c9">detach</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> addr, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *mem, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const &amp;task=This_task) const noexcept</td></tr>
<tr class="memdesc:af4ad2b5650cb44bff10c217220def4c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detach and unmap a region from the address space. <br /></td></tr>
<tr class="memitem:ac293fbe09183b2ac352bd1665b003cb0" id="r_ac293fbe09183b2ac352bd1665b003cb0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac293fbe09183b2ac352bd1665b003cb0">detach</a> (void *addr, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *mem, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const &amp;task=This_task) const noexcept</td></tr>
<tr class="memdesc:ac293fbe09183b2ac352bd1665b003cb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detach and unmap a region from the address space. <br /></td></tr>
<tr class="memitem:a74ba3fe648cf135cb99bd9dcecbb21f2" id="r_a74ba3fe648cf135cb99bd9dcecbb21f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a74ba3fe648cf135cb99bd9dcecbb21f2">detach</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> start, unsigned long size, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *mem, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const &amp;task) const noexcept</td></tr>
<tr class="memdesc:a74ba3fe648cf135cb99bd9dcecbb21f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detach and unmap all parts of the regions within the specified interval. <br /></td></tr>
<tr class="memitem:ae05bcd7f0c2215129701b029075d2f30" id="r_ae05bcd7f0c2215129701b029075d2f30"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae05bcd7f0c2215129701b029075d2f30">find</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *addr, unsigned long *size, Offset *offset, L4Re::Rm::Flags *flags, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *m) noexcept</td></tr>
<tr class="memdesc:ae05bcd7f0c2215129701b029075d2f30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a region given an address and size. <br /></td></tr>
<tr class="memitem:ad9b2dc91dae344c059141dd8d3275b81" id="r_ad9b2dc91dae344c059141dd8d3275b81"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad9b2dc91dae344c059141dd8d3275b81">get_regions</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> start, <a class="el" href="structL4_1_1Ipc_1_1Ret__array.html">L4::Ipc::Ret_array</a>&lt; <a class="el" href="structRm_1_1Region.html">Region</a> &gt; regions)</td></tr>
<tr class="memdesc:ad9b2dc91dae344c059141dd8d3275b81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the list of regions whose starting addresses are higher or equal to <span class="tt">start</span> in the address space managed by this region map. <br /></td></tr>
<tr class="memitem:ae0fe6f44210db60cc0b175b8d3eb7c31" id="r_ae0fe6f44210db60cc0b175b8d3eb7c31"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae0fe6f44210db60cc0b175b8d3eb7c31">get_areas</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> start, <a class="el" href="structL4_1_1Ipc_1_1Ret__array.html">L4::Ipc::Ret_array</a>&lt; <a class="el" href="structRm_1_1Area.html">Area</a> &gt; areas)</td></tr>
<tr class="memdesc:ae0fe6f44210db60cc0b175b8d3eb7c31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the list of areas whose starting addresses are higher or equal to <span class="tt">start</span> in the address space managed by this region map. <br /></td></tr>
<tr class="memitem:af0b1347f0977e69e0fd9a7ef4b2a07f9" id="r_af0b1347f0977e69e0fd9a7ef4b2a07f9"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af0b1347f0977e69e0fd9a7ef4b2a07f9">get_info</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> addr, L4::Ipc::String&lt; char &gt; &amp;name, Offset &amp;backing_offset)</td></tr>
<tr class="memdesc:af0b1347f0977e69e0fd9a7ef4b2a07f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return auxiliary information of a region. <br /></td></tr>
<tr class="inherit_header pub_methods_classL4_1_1Pager"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4_1_1Pager')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4_1_1Pager.html">L4::Pager</a></td></tr>
<tr class="memitem:aaa34a869ae386ec2f6a9f92309a22f36 inherit pub_methods_classL4_1_1Pager" id="r_aaa34a869ae386ec2f6a9f92309a22f36"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Pager.html#aaa34a869ae386ec2f6a9f92309a22f36">page_fault</a> (<a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> pfa, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> pc, <a class="el" href="classL4_1_1Ipc_1_1Rcv__fpage.html">L4::Ipc::Rcv_fpage</a> rwin, <a class="el" href="structL4_1_1Ipc_1_1Opt.html">L4::Ipc::Opt</a>&lt; <a class="el" href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a> &amp; &gt; fp)</td></tr>
<tr class="memdesc:aaa34a869ae386ec2f6a9f92309a22f36 inherit pub_methods_classL4_1_1Pager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Page-fault protocol message. <br /></td></tr>
<tr class="inherit_header pub_methods_classL4_1_1Io__pager"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4_1_1Io__pager')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4_1_1Io__pager.html">L4::Io_pager</a></td></tr>
<tr class="memitem:ab8ef03145d4a68d63400b049c225e07d inherit pub_methods_classL4_1_1Io__pager" id="r_ab8ef03145d4a68d63400b049c225e07d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Io__pager.html#ab8ef03145d4a68d63400b049c225e07d">io_page_fault</a> (<a class="el" href="unionl4__fpage__t.html">l4_fpage_t</a> io_pfa, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> pc, <a class="el" href="classL4_1_1Ipc_1_1Rcv__fpage.html">L4::Ipc::Rcv_fpage</a> rwin, <a class="el" href="structL4_1_1Ipc_1_1Opt.html">L4::Ipc::Opt</a>&lt; <a class="el" href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a> &amp; &gt; fp)</td></tr>
<tr class="memdesc:ab8ef03145d4a68d63400b049c225e07d inherit pub_methods_classL4_1_1Io__pager"><td class="mdescLeft">&#160;</td><td class="mdescRight">IO page fault protocol message. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-inherited" class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_types_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_types_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Types inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Rm, L4::Pager, L4RE_PROTO_RM, L4::Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t" id="r_af7df35ba5bf68ef5993e605a6b62328a"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classRm.html">Rm</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Class</b></td></tr>
<tr class="memdesc:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The target interface type (inheriting from <a class="el" href="classL4_1_1Kobject__t.html" title="Helper class to create an L4Re interface class that is derived from a single base class.">Kobject_t</a>). <br /></td></tr>
<tr class="memitem:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t" id="r_a0d83157994565e9c01f10006bdda2efa"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Iface&lt; PROTO, <a class="el" href="classRm.html">Rm</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface</b></td></tr>
<tr class="memdesc:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The interface description for the derived class. <br /></td></tr>
<tr class="memitem:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t" id="r_afc2feec2f4a15e85286aabfa15c53e06"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Merge_list&lt; Typeid::Iface_list&lt; <a class="el" href="classL4_1_1Kobject__t.html#a0d83157994565e9c01f10006bdda2efa">__Iface</a> &gt;, typename L4::Pager::__Iface_list &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface_list</b></td></tr>
<tr class="memdesc:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of all RPC interfaces provided directly or through inheritance. <br /></td></tr>
<tr class="inherit_header pro_types_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_types_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Types inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Pager, Io_pager, L4_PROTO_PAGE_FAULT &gt;</a></td></tr>
<tr class="memitem:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t" id="r_af7df35ba5bf68ef5993e605a6b62328a"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classL4_1_1Pager.html">Pager</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Class</b></td></tr>
<tr class="memdesc:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The target interface type (inheriting from <a class="el" href="classL4_1_1Kobject__t.html" title="Helper class to create an L4Re interface class that is derived from a single base class.">Kobject_t</a>). <br /></td></tr>
<tr class="memitem:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t" id="r_a0d83157994565e9c01f10006bdda2efa"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Iface&lt; PROTO, <a class="el" href="classL4_1_1Pager.html">Pager</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface</b></td></tr>
<tr class="memdesc:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The interface description for the derived class. <br /></td></tr>
<tr class="memitem:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t" id="r_afc2feec2f4a15e85286aabfa15c53e06"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Merge_list&lt; Typeid::Iface_list&lt; <a class="el" href="classL4_1_1Kobject__t.html#a0d83157994565e9c01f10006bdda2efa">__Iface</a> &gt;, typename Io_pager::__Iface_list &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface_list</b></td></tr>
<tr class="memdesc:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of all RPC interfaces provided directly or through inheritance. <br /></td></tr>
<tr class="inherit_header pro_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Rm, L4::Pager, L4RE_PROTO_RM, L4::Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t" id="r_a3d80fec7e057d575ec4b393437f05f8a"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Kobject__t.html#af7df35ba5bf68ef5993e605a6b62328a">Class</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>c</b> () const noexcept</td></tr>
<tr class="memdesc:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capability to ourselves. <br /></td></tr>
<tr class="inherit_header pro_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Pager, Io_pager, L4_PROTO_PAGE_FAULT &gt;</a></td></tr>
<tr class="memitem:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t" id="r_a3d80fec7e057d575ec4b393437f05f8a"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Kobject__t.html#af7df35ba5bf68ef5993e605a6b62328a">Class</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>c</b> () const noexcept</td></tr>
<tr class="memdesc:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capability to ourselves. <br /></td></tr>
<tr class="inherit_header pro_static_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Static Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Rm, L4::Pager, L4RE_PROTO_RM, L4::Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t" id="r_a7433b8eed587278821dd496864f75363"><td class="memItemLeft" align="right" valign="top">
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__check_protocols__</b> () noexcept</td></tr>
<tr class="memdesc:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper to check for protocol conflicts. <br /></td></tr>
<tr class="inherit_header pro_static_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Static Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Pager, Io_pager, L4_PROTO_PAGE_FAULT &gt;</a></td></tr>
<tr class="memitem:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t" id="r_a7433b8eed587278821dd496864f75363"><td class="memItemLeft" align="right" valign="top">
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__check_protocols__</b> () noexcept</td></tr>
<tr class="memdesc:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper to check for protocol conflicts. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="structRm_1_1Region.html" title="A region is a range of virtual addresses which is backed by content.">Region</a> map. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__api__l4re__rm.html">Region map API </a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00081">81</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div><a name="doc-enum-members" id="doc-enum-members"></a><h2 id="header-doc-enum-members" class="groupheader">Member Enumeration Documentation</h2>
<a id="ab2016b6baa0393491c0cc3ab97eff3af" name="ab2016b6baa0393491c0cc3ab97eff3af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2016b6baa0393491c0cc3ab97eff3af">&#9670;&#160;</a></span>Detach_flags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classL4Re_1_1Rm.html#ab2016b6baa0393491c0cc3ab97eff3af">L4Re::Rm::Detach_flags</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags for detach operation. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ab2016b6baa0393491c0cc3ab97eff3afa6d989d18bdfabb32dcd6e75081a43e4a" name="ab2016b6baa0393491c0cc3ab97eff3afa6d989d18bdfabb32dcd6e75081a43e4a"></a>Detach_exact&#160;</td><td class="fielddoc"><p>Do an unmap of the exact region given. </p>
</td></tr>
<tr><td class="fieldname"><a id="ab2016b6baa0393491c0cc3ab97eff3afa4a6ddedb3fb0cfd350dd3abc7ccdf2e3" name="ab2016b6baa0393491c0cc3ab97eff3afa4a6ddedb3fb0cfd350dd3abc7ccdf2e3"></a>Detach_overlap&#160;</td><td class="fielddoc"><p>Do an unmap of all overlapping regions. </p>
</td></tr>
<tr><td class="fieldname"><a id="ab2016b6baa0393491c0cc3ab97eff3afaa259dcd6b4ae942c89166285379d09af" name="ab2016b6baa0393491c0cc3ab97eff3afaa259dcd6b4ae942c89166285379d09af"></a>Detach_keep&#160;</td><td class="fielddoc"><p>Do not free the detached data space, ignore the <a class="el" href="structRm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989a73be84e7035cfe1bbed5edbff7116641" title="Free the portion of the data space after detach.">F::Detach_free</a>. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00221">221</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="a43a67efc09d07fb2b0ed559184d4a883" name="a43a67efc09d07fb2b0ed559184d4a883"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43a67efc09d07fb2b0ed559184d4a883">&#9670;&#160;</a></span>Detach_result</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883">L4Re::Rm::Detach_result</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Result values for detach operation. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a43a67efc09d07fb2b0ed559184d4a883a06735050c90071a6d5bf1f1f6c49d0e3" name="a43a67efc09d07fb2b0ed559184d4a883a06735050c90071a6d5bf1f1f6c49d0e3"></a>Detached_ds&#160;</td><td class="fielddoc"><p>Detached data sapce. </p>
</td></tr>
<tr><td class="fieldname"><a id="a43a67efc09d07fb2b0ed559184d4a883aad57a531f2f6d146ed4c18c889005763" name="a43a67efc09d07fb2b0ed559184d4a883aad57a531f2f6d146ed4c18c889005763"></a>Kept_ds&#160;</td><td class="fielddoc"><p>Kept data space. </p>
</td></tr>
<tr><td class="fieldname"><a id="a43a67efc09d07fb2b0ed559184d4a883aa327a69d4932e571c19e48ad5b81d9de" name="a43a67efc09d07fb2b0ed559184d4a883aa327a69d4932e571c19e48ad5b81d9de"></a>Split_ds&#160;</td><td class="fielddoc"><p>Splitted data space, and done. </p>
</td></tr>
<tr><td class="fieldname"><a id="a43a67efc09d07fb2b0ed559184d4a883a52152fd07767300856c5248edc1a5101" name="a43a67efc09d07fb2b0ed559184d4a883a52152fd07767300856c5248edc1a5101"></a>Detach_again&#160;</td><td class="fielddoc"><p>Detached data space, more to do. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00089">89</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="a6c519437e7be883723e43f80ea42ce87" name="a6c519437e7be883723e43f80ea42ce87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c519437e7be883723e43f80ea42ce87">&#9670;&#160;</a></span>Region_flag_shifts</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classL4Re_1_1Rm.html#a6c519437e7be883723e43f80ea42ce87">L4Re::Rm::Region_flag_shifts</a></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="structRm_1_1Region.html" title="A region is a range of virtual addresses which is backed by content.">Region</a> flag shifts. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a6c519437e7be883723e43f80ea42ce87aac2055075c855e3496dfcaa5060358e9" name="a6c519437e7be883723e43f80ea42ce87aac2055075c855e3496dfcaa5060358e9"></a>Caching_shift&#160;</td><td class="fielddoc"><p>Start of <a class="el" href="classL4Re_1_1Rm.html" title="Region map.">Rm</a> cache bits. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00101">101</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="aec840ef6586b29cc0c3efa182c0c4ea0" name="aec840ef6586b29cc0c3efa182c0c4ea0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec840ef6586b29cc0c3efa182c0c4ea0">&#9670;&#160;</a></span>attach() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::attach </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *</td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Rm::Flags</td> <td class="paramname"><span class="paramname"><em>flags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap</a>&lt; Dataspace &gt;</td> <td class="paramname"><span class="paramname"><em>mem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Rm::Offset</td> <td class="paramname"><span class="paramname"><em>offs</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char</td> <td class="paramname"><span class="paramname"><em>align</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const</td> <td class="paramname"><span class="paramname"><em>task</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt;<a class="el" href="classL4_1_1Task.html">L4::Task</a>&gt;::Invalid</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *</td> <td class="paramname"><span class="paramname"><em>name</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Rm::Offset</td> <td class="paramname"><span class="paramname"><em>backing_offset</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a data space to a region. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">start</td><td>Virtual start address where the region manager shall attach the data space. Will be rounded down to the nearest start of a page. If <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a" title="Search for a suitable address range.">L4Re::Rm::F::Search_addr</a> is given this value is used as the start address to search for a free virtual memory region and the resulting address is returned here. If <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">L4Re::Rm::F::In_area</a> is given the value is used as a selector for the area (see <a class="el" href="classL4Re_1_1Rm.html#ad1a4be565f4767dfce5e16d7d5e855c3" title="Reserve the given area in the region map.">L4Re::Rm::reserve_area</a>) to attach the data space to. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of the data space to attach (in bytes). Will be rounded up to the nearest multiple of the page size. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">flags</td><td>The flags control how and with which rights the dataspace is attached to the region. See <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041" title="Flags for attach operation.">L4Re::Rm::F::Attach_flags</a> and <a class="el" href="structL4Re_1_1Rm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989" title="Region flags (permissions, cacheability, special).">L4Re::Rm::F::Region_flags</a>. The caller must specify the desired rights of the attached region explicitly. The default set of rights is empty. If the <span class="tt"><a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041a5b916dc458b6756a7b2aa8478a2af2dd" title="Eagerly map the attached data space in.">F::Eager_map</a></span> flag is set this function may also return <a class="el" href="classL4Re_1_1Dataspace.html#a1c8539a63573cdd9216d9382e89b0e64" title="Request a flexpage mapping from the dataspace.">L4Re::Dataspace::map</a> error codes if the mapping fails. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">mem</td><td>Data space. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">offs</td><td>Offset into the data space to use. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">align</td><td>Alignment of the virtual region, log2-size, default: a page (<a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a" title="Size of a page, log2-based.">L4_PAGESHIFT</a>). This is only meaningful if the <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a" title="Search for a suitable address range.">L4Re::Rm::F::Search_addr</a> flag is used. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">task</td><td>Optional destination task of mapping if <span class="tt"><a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041a5b916dc458b6756a7b2aa8478a2af2dd" title="Eagerly map the attached data space in.">F::Eager_map</a></span> flag was passed. If invalid, the mapping is established in the current task. This parameter is only useful if the region manager is for a foreign task. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">name</td><td>Optional name of the region. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">backing_offset</td><td>Optional value describing an offset into the backing store of this region.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No area could be found (see <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">L4Re::Rm::F::In_area</a>) </td></tr>
<tr><td class="paramname">-L4_EPERM</td><td>Operation not allowed. </td></tr>
<tr><td class="paramname">-L4_EINVAL</td><td></td></tr>
<tr><td class="paramname">-L4_EADDRNOTAVAIL</td><td>The given address is not available. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>Makes the whole or parts of a data space visible in the virtual memory of the corresponding task. The corresponding region in the virtual address space is backed with the contents of the dataspace.</p>
<dl class="section note"><dt>Note</dt><dd>When searching for a free place in the virtual address space, the space between <em class="arg">start</em> and the end of the virtual address space is searched.</dd>
<dd>
There is no region object created, instead the region is defined by a virtual address within this range (see <a class="el" href="classL4Re_1_1Rm.html#ae05bcd7f0c2215129701b029075d2f30" title="Find a region given an address and size.">L4Re::Rm::find</a>). </dd></dl>
<p class="definition">Definition at line <a class="el" href="rm__impl_8h_source.html#l00034">34</a> of file <a class="el" href="rm__impl_8h_source.html">rm_impl.h</a>.</p>
</div>
</div>
<a id="a6466401aebc6df3c0c14992610228f83" name="a6466401aebc6df3c0c14992610228f83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6466401aebc6df3c0c14992610228f83">&#9670;&#160;</a></span>attach() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::attach </td>
<td>(</td>
<td class="paramtype">T **</td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Flags</td> <td class="paramname"><span class="paramname"><em>flags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap</a>&lt; Dataspace &gt;</td> <td class="paramname"><span class="paramname"><em>mem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Offset</td> <td class="paramname"><span class="paramname"><em>offs</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char</td> <td class="paramname"><span class="paramname"><em>align</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const</td> <td class="paramname"><span class="paramname"><em>task</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt;<a class="el" href="classL4_1_1Task.html">L4::Task</a>&gt;::Invalid</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *</td> <td class="paramname"><span class="paramname"><em>name</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Offset</td> <td class="paramname"><span class="paramname"><em>backing_offset</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a data space to a region. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">start</td><td>Virtual start address where the region manager shall attach the data space. Will be rounded down to the nearest start of a page. If <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a" title="Search for a suitable address range.">L4Re::Rm::F::Search_addr</a> is given this value is used as the start address to search for a free virtual memory region and the resulting address is returned here. If <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">L4Re::Rm::F::In_area</a> is given the value is used as a selector for the area (see <a class="el" href="classL4Re_1_1Rm.html#ad1a4be565f4767dfce5e16d7d5e855c3" title="Reserve the given area in the region map.">L4Re::Rm::reserve_area</a>) to attach the data space to. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of the data space to attach (in bytes). Will be rounded up to the nearest multiple of the page size. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">flags</td><td>The flags control how and with which rights the dataspace is attached to the region. See <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041" title="Flags for attach operation.">L4Re::Rm::F::Attach_flags</a> and <a class="el" href="structL4Re_1_1Rm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989" title="Region flags (permissions, cacheability, special).">L4Re::Rm::F::Region_flags</a>. The caller must specify the desired rights of the attached region explicitly. The default set of rights is empty. If the <span class="tt"><a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041a5b916dc458b6756a7b2aa8478a2af2dd" title="Eagerly map the attached data space in.">F::Eager_map</a></span> flag is set this function may also return <a class="el" href="classL4Re_1_1Dataspace.html#a1c8539a63573cdd9216d9382e89b0e64" title="Request a flexpage mapping from the dataspace.">L4Re::Dataspace::map</a> error codes if the mapping fails. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">mem</td><td>Data space. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">offs</td><td>Offset into the data space to use. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">align</td><td>Alignment of the virtual region, log2-size, default: a page (<a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a" title="Size of a page, log2-based.">L4_PAGESHIFT</a>). This is only meaningful if the <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a" title="Search for a suitable address range.">L4Re::Rm::F::Search_addr</a> flag is used. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">task</td><td>Optional destination task of mapping if <span class="tt"><a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041a5b916dc458b6756a7b2aa8478a2af2dd" title="Eagerly map the attached data space in.">F::Eager_map</a></span> flag was passed. If invalid, the mapping is established in the current task. This parameter is only useful if the region manager is for a foreign task. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">name</td><td>Optional name of the region. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">backing_offset</td><td>Optional value describing an offset into the backing store of this region.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No area could be found (see <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">L4Re::Rm::F::In_area</a>) </td></tr>
<tr><td class="paramname">-L4_EPERM</td><td>Operation not allowed. </td></tr>
<tr><td class="paramname">-L4_EINVAL</td><td></td></tr>
<tr><td class="paramname">-L4_EADDRNOTAVAIL</td><td>The given address is not available. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>Makes the whole or parts of a data space visible in the virtual memory of the corresponding task. The corresponding region in the virtual address space is backed with the contents of the dataspace.</p>
<dl class="section note"><dt>Note</dt><dd>When searching for a free place in the virtual address space, the space between <em class="arg">start</em> and the end of the virtual address space is searched.</dd>
<dd>
There is no region object created, instead the region is defined by a virtual address within this range (see <a class="el" href="classL4Re_1_1Rm.html#ae05bcd7f0c2215129701b029075d2f30" title="Find a region given an address and size.">L4Re::Rm::find</a>). </dd></dl>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00409">409</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="af4ad2b5650cb44bff10c217220def4c9" name="af4ad2b5650cb44bff10c217220def4c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4ad2b5650cb44bff10c217220def4c9">&#9670;&#160;</a></span>detach() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int L4Re::Rm::detach </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></td> <td class="paramname"><span class="paramname"><em>addr</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *</td> <td class="paramname"><span class="paramname"><em>mem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const &amp;</td> <td class="paramname"><span class="paramname"><em>task</em></span><span class="paramdefsep"> = </span><span class="paramdefval">This_task</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Detach and unmap a region from the address space. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">addr</td><td>Virtual address of region, any address within the region is valid. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">mem</td><td>Dataspace that is affected. Give 0 if not interested. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">task</td><td>This argument specifies the task where the pages are unmapped. Provide <a class="el" href="classL4_1_1Cap__base.html#ac74dbedb04347341ba30ece923c12fe7af425c8e16afcd760ecb1f30bd6c1437a" title="Invalid capability selector.">L4::Cap&lt;L4::Task&gt;::Invalid</a> for none. The default is the current task.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883" title="Result values for detach operation.">L4Re::Rm::Detach_result</a></td><td>On success. </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No region found. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>Frees a region in the virtual address space given by addr (address type). The corresponding part of the address space is now available again. </p>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00765">765</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="a74ba3fe648cf135cb99bd9dcecbb21f2" name="a74ba3fe648cf135cb99bd9dcecbb21f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74ba3fe648cf135cb99bd9dcecbb21f2">&#9670;&#160;</a></span>detach() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int L4Re::Rm::detach </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *</td> <td class="paramname"><span class="paramname"><em>mem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const &amp;</td> <td class="paramname"><span class="paramname"><em>task</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Detach and unmap all parts of the regions within the specified interval. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">start</td><td>Start of area to detach, must be within region. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of of area to detach (in bytes). </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">mem</td><td>Dataspace that is affected. Give 0 if not interested. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">task</td><td>This argument specifies the task where the pages are unmapped. Provide <a class="el" href="classL4_1_1Cap__base.html#ac74dbedb04347341ba30ece923c12fe7af425c8e16afcd760ecb1f30bd6c1437a" title="Invalid capability selector.">L4::Cap&lt;L4::Task&gt;::Invalid</a> for none. The default is the current task.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883" title="Result values for detach operation.">L4Re::Rm::Detach_result</a></td><td>On success. </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No region found. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>Frees all regions within the interval given by start and size. If a region overlaps the start or the end of the interval this region is only detached partly. If the interval is within one region the original region is split up into two separate regions. </p>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00778">778</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="ac293fbe09183b2ac352bd1665b003cb0" name="ac293fbe09183b2ac352bd1665b003cb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac293fbe09183b2ac352bd1665b003cb0">&#9670;&#160;</a></span>detach() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int L4Re::Rm::detach </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>addr</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *</td> <td class="paramname"><span class="paramname"><em>mem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Task.html">L4::Task</a> &gt; const &amp;</td> <td class="paramname"><span class="paramname"><em>task</em></span><span class="paramdefsep"> = </span><span class="paramdefval">This_task</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Detach and unmap a region from the address space. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">addr</td><td>Virtual address of region, any address within the region is valid. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">mem</td><td>Dataspace that is affected. Give 0 if not interested. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">task</td><td>This argument specifies the task where the pages are unmapped. Provide <a class="el" href="classL4_1_1Cap__base.html#ac74dbedb04347341ba30ece923c12fe7af425c8e16afcd760ecb1f30bd6c1437a" title="Invalid capability selector.">L4::Cap&lt;L4::Task&gt;::Invalid</a> for none. The default is the current task.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="classL4Re_1_1Rm.html#a43a67efc09d07fb2b0ed559184d4a883" title="Result values for detach operation.">L4Re::Rm::Detach_result</a></td><td>On success. </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No region found. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>Frees a region in the virtual address space given by addr (address type). The corresponding part of the address space is now available again. </p>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00770">770</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="ae05bcd7f0c2215129701b029075d2f30" name="ae05bcd7f0c2215129701b029075d2f30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae05bcd7f0c2215129701b029075d2f30">&#9670;&#160;</a></span>find()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::find </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *</td> <td class="paramname"><span class="paramname"><em>addr</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long *</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Offset *</td> <td class="paramname"><span class="paramname"><em>offset</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">L4Re::Rm::Flags *</td> <td class="paramname"><span class="paramname"><em>flags</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; Dataspace &gt; *</td> <td class="paramname"><span class="paramname"><em>m</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find a region given an address and size. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">addr</td><td>Address to look for. Returns the start address of the found region. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">size</td><td>Size of the area to look for (in bytes). Returns the size of the found region (in bytes). </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">offset</td><td>Offset at the beginning of the region within the associated dataspace. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">flags</td><td><a class="el" href="structRm_1_1Region.html" title="A region is a range of virtual addresses which is backed by content.">Region</a> flags, see <a class="el" href="structRm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989" title="Region flags (permissions, cacheability, special).">F::Region_flags</a> (and <a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">F::In_area</a>). </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">m</td><td>Associated dataspace or paging service.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_EPERM</td><td>Operation not allowed. </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No region found. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>This function returns the properties of the region that contains the area described by the addr and size parameter. If no such region is found but a reserved area, the area is returned and <a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">F::In_area</a> is set in <span class="tt">flags</span>. Note, in the case of an area the <span class="tt">offset</span> and <span class="tt">m</span> return values are invalid.</p>
<pre class="fragment"> size-out
/ \
/ \
addr-out \
^________________\
------------|----------------|------------------
| | Region | Dataspace |
| |_______|___|____| |
------------|-------|---|-----------------------
\ / |\ /
\ / | |&gt; size-in
offset-out |
|&gt; addr-in
</pre><dl class="section note"><dt>Note</dt><dd>The value of the size input parameter should be 1 to assure that a region can be determined unambiguously. </dd></dl>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00672">672</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="a3165a1f7521b5ec58cd710654575f6bb" name="a3165a1f7521b5ec58cd710654575f6bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3165a1f7521b5ec58cd710654575f6bb">&#9670;&#160;</a></span>free_area()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::free_area </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></td> <td class="paramname"><span class="paramname"><em>addr</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Free an area from the region map. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>An address within the area to free. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td>No area found. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The data spaces that are attached to that area are not detached by this operation. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad1a4be565f4767dfce5e16d7d5e855c3" title="Reserve the given area in the region map.">reserve_area()</a> for more information about areas. </dd></dl>
</div>
</div>
<a id="ae0fe6f44210db60cc0b175b8d3eb7c31" name="ae0fe6f44210db60cc0b175b8d3eb7c31"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0fe6f44210db60cc0b175b8d3eb7c31">&#9670;&#160;</a></span>get_areas()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::get_areas </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structL4_1_1Ipc_1_1Ret__array.html">L4::Ipc::Ret_array</a>&lt; <a class="el" href="structRm_1_1Area.html">Area</a> &gt;</td> <td class="paramname"><span class="paramname"><em>areas</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the list of areas whose starting addresses are higher or equal to <span class="tt">start</span> in the address space managed by this region map. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">start</td><td>Virtual address from where to start searching. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">areas</td><td>List of areas found in this region map.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">&gt;=0</td><td>Number of returned areas in the <span class="tt">areas</span> array. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The returned list of areas might not be complete and the caller shall use the function repeatedly with a start address one larger than the end address of the last area from the previous call. </dd></dl>
</div>
</div>
<a id="af0b1347f0977e69e0fd9a7ef4b2a07f9" name="af0b1347f0977e69e0fd9a7ef4b2a07f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0b1347f0977e69e0fd9a7ef4b2a07f9">&#9670;&#160;</a></span>get_info()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::get_info </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></td> <td class="paramname"><span class="paramname"><em>addr</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">L4::Ipc::String&lt; char &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>name</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Offset &amp;</td> <td class="paramname"><span class="paramname"><em>backing_offset</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return auxiliary information of a region. </p>
<p>This is a debugging feature and might not be available.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">addr</td><td>Virtual address of the region. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">name</td><td>Name of the region. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">backing_offset</td><td>Backing offset information.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_ENOENT</td><td><a class="el" href="structRm_1_1Region.html" title="A region is a range of virtual addresses which is backed by content.">Region</a> not found. </td></tr>
<tr><td class="paramname">-L4_ENOSYS</td><td>Function not available. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad9b2dc91dae344c059141dd8d3275b81" name="ad9b2dc91dae344c059141dd8d3275b81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9b2dc91dae344c059141dd8d3275b81">&#9670;&#160;</a></span>get_regions()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::get_regions </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structL4_1_1Ipc_1_1Ret__array.html">L4::Ipc::Ret_array</a>&lt; <a class="el" href="structRm_1_1Region.html">Region</a> &gt;</td> <td class="paramname"><span class="paramname"><em>regions</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the list of regions whose starting addresses are higher or equal to <span class="tt">start</span> in the address space managed by this region map. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">start</td><td>Virtual address from where to start searching. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">regions</td><td>List of regions found in this region map.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">&gt;=0</td><td>Number of returned regions in the <span class="tt">regions</span> array. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The returned list of regions might not be complete and the caller shall use the function repeatedly with a start address one larger that the end address of the last region from the previous call. </dd></dl>
</div>
</div>
<a id="ad1a4be565f4767dfce5e16d7d5e855c3" name="ad1a4be565f4767dfce5e16d7d5e855c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1a4be565f4767dfce5e16d7d5e855c3">&#9670;&#160;</a></span>reserve_area() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::reserve_area </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *</td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Flags</td> <td class="paramname"><span class="paramname"><em>flags</em></span><span class="paramdefsep"> = </span><span class="paramdefval">Flags(0)</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char</td> <td class="paramname"><span class="paramname"><em>align</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserve the given area in the region map. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">start</td><td>The virtual start address of the area to reserve. Returns the start address of the area. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>The size of the area to reserve (in bytes). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">flags</td><td>Flags for the reserved area (see <a class="el" href="structL4Re_1_1Rm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989" title="Region flags (permissions, cacheability, special).">L4Re::Rm::F::Region_flags</a> and <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041" title="Flags for attach operation.">L4Re::Rm::F::Attach_flags</a>). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">align</td><td>Alignment of area if searched as bits (log2 value). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_EADDRNOTAVAIL</td><td>The given area cannot be reserved. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>This function reserves an area within the virtual address space managed by the region map. There are two kinds of areas available:</p><ul>
<li>Reserved areas (<em class="arg">flags</em> = <a class="el" href="structL4Re_1_1Rm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989a10240889d9e7bb27e7bb04f0ea46122d" title="Region is reserved (blocked).">L4Re::Rm::F::Reserved</a>), where no data spaces can be attached</li>
<li>Special purpose areas (<em class="arg">flags</em> = 0), where data spaces can be attached to the area via the <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041af80cdbdea8dc3a8e155be2ad2c3e5579" title="Search only in area, or map into area.">L4Re::Rm::F::In_area</a> flag and a start address within the area itself.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>When searching for a free place in the virtual address space (with <em class="arg">flags</em> = <a class="el" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a" title="Search for a suitable address range.">L4Re::Rm::F::Search_addr</a>), the space between <em class="arg">start</em> and the end of the virtual address space is searched. </dd></dl>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00280">280</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<a id="a48756bf96d7afde63c8b15adbfd30a38" name="a48756bf96d7afde63c8b15adbfd30a38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48756bf96d7afde63c8b15adbfd30a38">&#9670;&#160;</a></span>reserve_area() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long L4Re::Rm::reserve_area </td>
<td>(</td>
<td class="paramtype">T **</td> <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Flags</td> <td class="paramname"><span class="paramname"><em>flags</em></span><span class="paramdefsep"> = </span><span class="paramdefval">Flags(0)</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char</td> <td class="paramname"><span class="paramname"><em>align</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="group__l4__memory__api.html#gad2f7e71d6265b2735f730dc90c54539a">L4_PAGESHIFT</a></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserve the given area in the region map. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">start</td><td>The virtual start address of the area to reserve. Returns the start address of the area. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>The size of the area to reserve (in bytes). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">flags</td><td>Flags for the reserved area (see <a class="el" href="structRm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989" title="Region flags (permissions, cacheability, special).">F::Region_flags</a> and <a class="el" href="structRm_1_1F.html#adec4d26077e34d9586891ac0489e0041" title="Flags for attach operation.">F::Attach_flags</a>). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">align</td><td>Alignment of area if searched as bits (log2 value). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success </td></tr>
<tr><td class="paramname">-L4_EADDRNOTAVAIL</td><td>The given area cannot be reserved. </td></tr>
<tr><td class="paramname">&lt;0</td><td>IPC errors</td></tr>
</table>
</dd>
</dl>
<p>For more information, please refer to the analogous function </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classL4Re_1_1Rm.html#ad1a4be565f4767dfce5e16d7d5e855c3" title="Reserve the given area in the region map.">L4Re::Rm::reserve_area</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="rm_source.html#l00306">306</a> of file <a class="el" href="rm_source.html">rm</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>l4/re/<a class="el" href="rm_source.html">rm</a></li>
<li>l4/re/impl/<a class="el" href="rm__impl_8h_source.html">rm_impl.h</a></li>
</ul>
</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="navelem"><a href="classRm.html">Rm</a></li>
<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>