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

482 lines
30 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: Sigma0 API</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__l4sigma0__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">Sigma0 API </div></div>
</div><!--header-->
<div class="contents">
<p>Sigma0 API bindings.
<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 Sigma0 API:</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__l4sigma0__api.svg" width="294" 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-groups" class="groupheader"><a id="groups" name="groups"></a>
Topics</h2></td></tr>
<tr class="memitem:l4sigma0_5Fapi_5Finternal" id="r_l4sigma0_5Fapi_5Finternal"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__l4sigma0__api__internal.html">Internal constants </a></td></tr>
<tr class="memdesc:group__l4sigma0__api__internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal sigma0 definitions. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:sigma0_2Eh" id="r_sigma0_2Eh"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sigma0_8h.html">sigma0.h</a></td></tr>
<tr class="memdesc:sigma0_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sigma0 interface. <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:ga63ff5a7593a5fac2db055b788dd2ead4" id="r_ga63ff5a7593a5fac2db055b788dd2ead4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga63ff5a7593a5fac2db055b788dd2ead4">l4sigma0_return_flags_t</a> { <br />
&#160;&#160;<a class="el" href="#gga63ff5a7593a5fac2db055b788dd2ead4af6087576e88057a6589802313296449e">L4SIGMA0_OK</a>
, <a class="el" href="#gga63ff5a7593a5fac2db055b788dd2ead4a0501094ab3c9500ec27501a21337545d">L4SIGMA0_NOTALIGNED</a>
, <a class="el" href="#gga63ff5a7593a5fac2db055b788dd2ead4a4bcc75cec5d08f3161aa5a9601e3117f">L4SIGMA0_IPCERROR</a>
, <a class="el" href="#gga63ff5a7593a5fac2db055b788dd2ead4a53c92dc782c61b4e2904565481d4a3ed">L4SIGMA0_NOFPAGE</a>
, <br />
&#160;&#160;<b>L4SIGMA0_4</b>
, <b>L4SIGMA0_5</b>
, <a class="el" href="#gga63ff5a7593a5fac2db055b788dd2ead4ac8ff7cfe1b3c59db82229836646aee48">L4SIGMA0_SMALLERFPAGE</a>
<br />
}</td></tr>
<tr class="memdesc:ga63ff5a7593a5fac2db055b788dd2ead4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return flags of libsigma0 functions. <a href="#ga63ff5a7593a5fac2db055b788dd2ead4">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:ga8bc18f6ffdb210df223c7fbba0125023" id="r_ga8bc18f6ffdb210df223c7fbba0125023"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4sys__defines.html#ga5f022ce5422df9cc6ed415e2bfc90f59">L4_BEGIN_DECLS</a> <a class="el" href="structl4__kernel__info__t.html">l4_kernel_info_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8bc18f6ffdb210df223c7fbba0125023">l4sigma0_map_kip</a> (<a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> sigma0, void *addr, unsigned log2_size)</td></tr>
<tr class="memdesc:ga8bc18f6ffdb210df223c7fbba0125023"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map the kernel info page from sigma0 to addr. <br /></td></tr>
<tr class="memitem:ga02dea55b7f20839cadb39e7be2170322" id="r_ga02dea55b7f20839cadb39e7be2170322"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga02dea55b7f20839cadb39e7be2170322">l4sigma0_map_mem</a> (<a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> sigma0, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> phys, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> virt, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> size)</td></tr>
<tr class="memdesc:ga02dea55b7f20839cadb39e7be2170322"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a memory mapping from sigma0. <br /></td></tr>
<tr class="memitem:ga52361667d09a8863a4964cfc81f74b44" id="r_ga52361667d09a8863a4964cfc81f74b44"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga52361667d09a8863a4964cfc81f74b44">l4sigma0_map_iomem</a> (<a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> sigma0, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> phys, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> virt, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> size, int cached)</td></tr>
<tr class="memdesc:ga52361667d09a8863a4964cfc81f74b44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request IO memory from sigma0. <br /></td></tr>
<tr class="memitem:gaf7b94689baa309e49ebc43f2decf9eeb" id="r_gaf7b94689baa309e49ebc43f2decf9eeb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaf7b94689baa309e49ebc43f2decf9eeb">l4sigma0_map_anypage</a> (<a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> sigma0, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> map_area, unsigned log2_map_size, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *base, unsigned sz)</td></tr>
<tr class="memdesc:gaf7b94689baa309e49ebc43f2decf9eeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request an arbitrary free page of RAM. <br /></td></tr>
<tr class="memitem:gab6adab01ac509e691c259f3985d472cf" id="r_gab6adab01ac509e691c259f3985d472cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gab6adab01ac509e691c259f3985d472cf">l4sigma0_debug_dump</a> (<a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> sigma0)</td></tr>
<tr class="memdesc:gab6adab01ac509e691c259f3985d472cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request sigma0 to dump internal debug information. <br /></td></tr>
<tr class="memitem:ga4d53aaea7b53bee5a0d37e03c5868639" id="r_ga4d53aaea7b53bee5a0d37e03c5868639"><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4d53aaea7b53bee5a0d37e03c5868639">l4sigma0_map_errstr</a> (int err)</td></tr>
<tr class="memdesc:ga4d53aaea7b53bee5a0d37e03c5868639"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get user readable error messages for the return codes. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>Sigma0 API bindings. </p>
<p>Convenience bindings for the Sigma0 protocol. </p>
<a name="doc-enum-members" id="doc-enum-members"></a><h2 id="header-doc-enum-members" class="groupheader">Enumeration Type Documentation</h2>
<a id="ga63ff5a7593a5fac2db055b788dd2ead4" name="ga63ff5a7593a5fac2db055b788dd2ead4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga63ff5a7593a5fac2db055b788dd2ead4">&#9670;&#160;</a></span>l4sigma0_return_flags_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="#ga63ff5a7593a5fac2db055b788dd2ead4">l4sigma0_return_flags_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return flags of libsigma0 functions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga63ff5a7593a5fac2db055b788dd2ead4af6087576e88057a6589802313296449e" name="gga63ff5a7593a5fac2db055b788dd2ead4af6087576e88057a6589802313296449e"></a>L4SIGMA0_OK&#160;</td><td class="fielddoc"><p>Ok. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga63ff5a7593a5fac2db055b788dd2ead4a0501094ab3c9500ec27501a21337545d" name="gga63ff5a7593a5fac2db055b788dd2ead4a0501094ab3c9500ec27501a21337545d"></a>L4SIGMA0_NOTALIGNED&#160;</td><td class="fielddoc"><p>Phys, virt or size not aligned. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga63ff5a7593a5fac2db055b788dd2ead4a4bcc75cec5d08f3161aa5a9601e3117f" name="gga63ff5a7593a5fac2db055b788dd2ead4a4bcc75cec5d08f3161aa5a9601e3117f"></a>L4SIGMA0_IPCERROR&#160;</td><td class="fielddoc"><p>IPC error. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga63ff5a7593a5fac2db055b788dd2ead4a53c92dc782c61b4e2904565481d4a3ed" name="gga63ff5a7593a5fac2db055b788dd2ead4a53c92dc782c61b4e2904565481d4a3ed"></a>L4SIGMA0_NOFPAGE&#160;</td><td class="fielddoc"><p>No fpage received. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga63ff5a7593a5fac2db055b788dd2ead4ac8ff7cfe1b3c59db82229836646aee48" name="gga63ff5a7593a5fac2db055b788dd2ead4ac8ff7cfe1b3c59db82229836646aee48"></a>L4SIGMA0_SMALLERFPAGE&#160;</td><td class="fielddoc"><p>Superpage requested but smaller flexpage received. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="sigma0_8h_source.html#l00074">74</a> of file <a class="el" href="sigma0_8h_source.html">sigma0.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="gab6adab01ac509e691c259f3985d472cf" name="gab6adab01ac509e691c259f3985d472cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab6adab01ac509e691c259f3985d472cf">&#9670;&#160;</a></span>l4sigma0_debug_dump()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void l4sigma0_debug_dump </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a></td> <td class="paramname"><span class="paramname"><em>sigma0</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Request sigma0 to dump internal debug information. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sigma0</td><td>Capability selector for the sigma0 gate.</td></tr>
</table>
</dd>
</dl>
<p>The debug information, such as internal memory maps, as well as statistics about the internal allocators is dumped to the kernel debugger. </p>
<p class="reference">References <a class="el" href="arm_2l4_2sys_2linkage_8h_source.html#l00033">L4_CV</a>, and <a class="el" href="compiler_8h_source.html#l00051">L4_INLINE</a>.</p>
</div>
</div>
<a id="gaf7b94689baa309e49ebc43f2decf9eeb" name="gaf7b94689baa309e49ebc43f2decf9eeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf7b94689baa309e49ebc43f2decf9eeb">&#9670;&#160;</a></span>l4sigma0_map_anypage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int l4sigma0_map_anypage </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a></td> <td class="paramname"><span class="paramname"><em>sigma0</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>map_area</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>log2_map_size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>base</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>sz</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Request an arbitrary free page of RAM. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">sigma0</td><td>Capability selector for the sigma0 gate. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">map_area</td><td>The base address of the local virtual memory area where the page should be mapped. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">log2_map_size</td><td>The size of the requested page log 2 (the size in bytes is 2^log2_map_size). This must be at least the minimal page size. By specifing larger sizes the largest possible hardware page size will be used. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">base</td><td>Physical address of the page received (i.e. the send base of the received mapping if any). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">sz</td><td>Size to map by the server in 2^sz bytes.</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">-L4SIGMA0_IPCERROR</td><td>IPC error. </td></tr>
<tr><td class="paramname">-L4SIGMA0_NOFPAGE</td><td>No fpage received.</td></tr>
</table>
</dd>
</dl>
<p>This function requests arbitrary free memory from sigma0. It should be used whenever spare memory is needed, instead of requesting specific physical memory with <a class="el" href="#ga02dea55b7f20839cadb39e7be2170322" title="Request a memory mapping from sigma0.">l4sigma0_map_mem()</a>.</p>
<p>See <a class="el" href="#ga4d53aaea7b53bee5a0d37e03c5868639" title="Get user readable error messages for the return codes.">l4sigma0_map_errstr()</a> to get a description of the return value. </p>
<p class="reference">References <a class="el" href="arm_2l4_2sys_2linkage_8h_source.html#l00033">L4_CV</a>.</p>
</div>
</div>
<a id="ga4d53aaea7b53bee5a0d37e03c5868639" name="ga4d53aaea7b53bee5a0d37e03c5868639"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4d53aaea7b53bee5a0d37e03c5868639">&#9670;&#160;</a></span>l4sigma0_map_errstr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char const * l4sigma0_map_errstr </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>err</em></span></td><td>)</td>
<td></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>Get user readable error messages for the return codes. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">err</td><td>The error code reported by the <em>map</em> functions.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A string containing the error message. </dd></dl>
<p class="definition">Definition at line <a class="el" href="sigma0_8h_source.html#l00206">206</a> of file <a class="el" href="sigma0_8h_source.html">sigma0.h</a>.</p>
<p class="reference">References <a class="el" href="compiler_8h_source.html#l00051">L4_INLINE</a>.</p>
</div>
</div>
<a id="ga52361667d09a8863a4964cfc81f74b44" name="ga52361667d09a8863a4964cfc81f74b44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga52361667d09a8863a4964cfc81f74b44">&#9670;&#160;</a></span>l4sigma0_map_iomem()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int l4sigma0_map_iomem </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a></td> <td class="paramname"><span class="paramname"><em>sigma0</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>phys</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>virt</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>cached</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Request IO memory from sigma0. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sigma0</td><td>Capability selector for the sigma0 gate. </td></tr>
<tr><td class="paramname">phys</td><td>The physical address to be requested (page aligned). </td></tr>
<tr><td class="paramname">virt</td><td>The virtual address where the memory should be mapped to (page aligned). </td></tr>
<tr><td class="paramname">size</td><td>The size of the IO memory area to be mapped (multiple of page size) </td></tr>
<tr><td class="paramname">cached</td><td>Requests cacheable IO memory if 1 and uncached if 0.</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">-L4SIGMA0_NOTALIGNED</td><td><span class="tt">phys</span>, <span class="tt">virt</span>, or <span class="tt">size</span> are not aligned. </td></tr>
<tr><td class="paramname">-L4SIGMA0_IPCERROR</td><td>IPC error. </td></tr>
<tr><td class="paramname">-L4SIGMA0_NOFPAGE</td><td>No fpage received.</td></tr>
</table>
</dd>
</dl>
<p>This function is similar to <a class="el" href="#ga02dea55b7f20839cadb39e7be2170322" title="Request a memory mapping from sigma0.">l4sigma0_map_mem()</a>, the difference is that it requests IO memory. IO memory is everything that is not known to be normal RAM. Also ACPI tables or the BIOS memory is treated as IO memory.</p>
<p>See <a class="el" href="#ga4d53aaea7b53bee5a0d37e03c5868639" title="Get user readable error messages for the return codes.">l4sigma0_map_errstr()</a> to get a description of the return value. </p>
<p class="reference">References <a class="el" href="arm_2l4_2sys_2linkage_8h_source.html#l00033">L4_CV</a>.</p>
</div>
</div>
<a id="ga8bc18f6ffdb210df223c7fbba0125023" name="ga8bc18f6ffdb210df223c7fbba0125023"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8bc18f6ffdb210df223c7fbba0125023">&#9670;&#160;</a></span>l4sigma0_map_kip()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__l4sys__defines.html#ga5f022ce5422df9cc6ed415e2bfc90f59">L4_BEGIN_DECLS</a> <a class="el" href="structl4__kernel__info__t.html">l4_kernel_info_t</a> * l4sigma0_map_kip </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a></td> <td class="paramname"><span class="paramname"><em>sigma0</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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">unsigned</td> <td class="paramname"><span class="paramname"><em>log2_size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Map the kernel info page from sigma0 to addr. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sigma0</td><td>Capability selector for the sigma0 gate. </td></tr>
<tr><td class="paramname">addr</td><td>Start of the receive window to receive KIP in. </td></tr>
<tr><td class="paramname">log2_size</td><td>Size of the receive window to receive KIP in.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Address KIP was mapped to, 0 indicates an error. </dd></dl>
</div>
</div>
<a id="ga02dea55b7f20839cadb39e7be2170322" name="ga02dea55b7f20839cadb39e7be2170322"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga02dea55b7f20839cadb39e7be2170322">&#9670;&#160;</a></span>l4sigma0_map_mem()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int l4sigma0_map_mem </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a></td> <td class="paramname"><span class="paramname"><em>sigma0</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>phys</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>virt</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></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>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Request a memory mapping from sigma0. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sigma0</td><td>Capability selector for the sigma0 gate. </td></tr>
<tr><td class="paramname">phys</td><td>The physical address of the requested page (must be at least aligned to the minimum page size). </td></tr>
<tr><td class="paramname">virt</td><td>The virtual address where the paged should be mapped in the local address space (must be at least aligned to the minimum page size). </td></tr>
<tr><td class="paramname">size</td><td>The size of the requested page, this must be a multiple of the minimum page size.</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">-L4SIGMA0_NOTALIGNED</td><td><span class="tt">phys</span>, <span class="tt">virt</span>, or <span class="tt">size</span> are not aligned. </td></tr>
<tr><td class="paramname">-L4SIGMA0_IPCERROR</td><td>IPC error. </td></tr>
<tr><td class="paramname">-L4SIGMA0_NOFPAGE</td><td>No fpage received.</td></tr>
</table>
</dd>
</dl>
<p>This function only maps normal RAM. To map other memory, use <a class="el" href="#ga52361667d09a8863a4964cfc81f74b44" title="Request IO memory from sigma0.">l4sigma0_map_iomem()</a>. See also there for the distinction between both memory types.</p>
<p>This is the direct method to request memory from sigma0. There is also the indirect method where sigma0 will answer page faults with a mapping that is one-to-one between the faulting virtual page and the backing physical page. See <a class="el" href="classL4_1_1Pager.html#aaa34a869ae386ec2f6a9f92309a22f36" title="Page-fault protocol message.">L4::Pager::page_fault()</a>. For an overview of the memory hierarchy, see <a class="el" href="l4re_concepts_ds_rm.html">Memory management - Data Spaces and the Region Map</a>.</p>
<p>See <a class="el" href="#ga4d53aaea7b53bee5a0d37e03c5868639" title="Get user readable error messages for the return codes.">l4sigma0_map_errstr()</a> to get a description of the return value. </p>
<p class="reference">References <a class="el" href="arm_2l4_2sys_2linkage_8h_source.html#l00033">L4_CV</a>.</p>
</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>