761 lines
57 KiB
HTML
761 lines
57 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: L4Re::Dataspace 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('classL4Re_1_1Dataspace.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">L4Re::Dataspace Class Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Interface for memory-like objects.
|
|
<a href="#details">More...</a></p>
|
|
|
|
<p><code>#include <<a class="el" href="dataspace_source.html">dataspace</a>></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 L4Re::Dataspace:</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="classL4Re_1_1Dataspace__inherit__graph.svg" width="443" height="984"><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 L4Re::Dataspace:</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="classL4Re_1_1Dataspace__coll__graph.svg" width="443" height="626"><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  </td><td class="memItemRight" valign="bottom"><a class="el" href="structL4Re_1_1Dataspace_1_1F.html">F</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classL4Re_1_1Dataspace.html" title="Interface for memory-like objects.">Dataspace</a> flags definitions. <a href="structL4Re_1_1Dataspace_1_1F.html#details">More...</a><br /></td></tr>
|
|
<tr class="memitem:Stats" id="r_Stats"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structL4Re_1_1Dataspace_1_1Stats.html">Stats</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Information about the dataspace. <a href="structL4Re_1_1Dataspace_1_1Stats.html#details">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:a1c8539a63573cdd9216d9382e89b0e64" id="r_a1c8539a63573cdd9216d9382e89b0e64"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1c8539a63573cdd9216d9382e89b0e64">map</a> (Offset offset, Flags <a class="el" href="#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a>, Map_addr local_addr, Map_addr min_addr, Map_addr max_addr, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>< <a class="el" href="classL4_1_1Task.html">L4::Task</a> > dst=<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>< <a class="el" href="classL4_1_1Task.html">L4::Task</a> >::Invalid) const noexcept</td></tr>
|
|
<tr class="memdesc:a1c8539a63573cdd9216d9382e89b0e64"><td class="mdescLeft"> </td><td class="mdescRight">Request a flexpage mapping from the dataspace. <br /></td></tr>
|
|
<tr class="memitem:a971cf0d6a16afe265efbd4a40a2f6d03" id="r_a971cf0d6a16afe265efbd4a40a2f6d03"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#a971cf0d6a16afe265efbd4a40a2f6d03">map_region</a> (Offset offset, Flags <a class="el" href="#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a>, Map_addr min_addr, Map_addr max_addr, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>< <a class="el" href="classL4_1_1Task.html">L4::Task</a> > dst=<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>< <a class="el" href="classL4_1_1Task.html">L4::Task</a> >::Invalid) const noexcept</td></tr>
|
|
<tr class="memdesc:a971cf0d6a16afe265efbd4a40a2f6d03"><td class="mdescLeft"> </td><td class="mdescRight">Map a part of a dataspace into a local memory area. <br /></td></tr>
|
|
<tr class="memitem:aec6654feafb167a373e056b326a99151" id="r_aec6654feafb167a373e056b326a99151"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#aec6654feafb167a373e056b326a99151">clear</a> (Offset offset, Size <a class="el" href="#ace7817f743e42404bcfe0a0e348884e1">size</a>)</td></tr>
|
|
<tr class="memdesc:aec6654feafb167a373e056b326a99151"><td class="mdescLeft"> </td><td class="mdescRight">Clear parts of a dataspace. <br /></td></tr>
|
|
<tr class="memitem:af54638ea6c363bb5096267a0eb89d86a" id="r_af54638ea6c363bb5096267a0eb89d86a"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#af54638ea6c363bb5096267a0eb89d86a">allocate</a> (Offset offset, Size <a class="el" href="#ace7817f743e42404bcfe0a0e348884e1">size</a>)</td></tr>
|
|
<tr class="memdesc:af54638ea6c363bb5096267a0eb89d86a"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a range in the dataspace. <br /></td></tr>
|
|
<tr class="memitem:a21ba4a8d1053498647834e622daf285a" id="r_a21ba4a8d1053498647834e622daf285a"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#a21ba4a8d1053498647834e622daf285a">copy_in</a> (Offset dst_offs, <a class="el" href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap</a>< <a class="el" href="classL4Re_1_1Dataspace.html">Dataspace</a> > src, Offset src_offs, Size <a class="el" href="#ace7817f743e42404bcfe0a0e348884e1">size</a>)</td></tr>
|
|
<tr class="memdesc:a21ba4a8d1053498647834e622daf285a"><td class="mdescLeft"> </td><td class="mdescRight">Copy contents from another dataspace. <br /></td></tr>
|
|
<tr class="memitem:ace7817f743e42404bcfe0a0e348884e1" id="r_ace7817f743e42404bcfe0a0e348884e1"><td class="memItemLeft" align="right" valign="top">Size </td><td class="memItemRight" valign="bottom"><a class="el" href="#ace7817f743e42404bcfe0a0e348884e1">size</a> () const noexcept</td></tr>
|
|
<tr class="memdesc:ace7817f743e42404bcfe0a0e348884e1"><td class="mdescLeft"> </td><td class="mdescRight">Get size of a dataspace. <br /></td></tr>
|
|
<tr class="memitem:af96cd7d2c6fd10bfbbb0b426197a231c" id="r_af96cd7d2c6fd10bfbbb0b426197a231c"><td class="memItemLeft" align="right" valign="top">Flags </td><td class="memItemRight" valign="bottom"><a class="el" href="#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a> () const noexcept</td></tr>
|
|
<tr class="memdesc:af96cd7d2c6fd10bfbbb0b426197a231c"><td class="mdescLeft"> </td><td class="mdescRight">Get flags of the dataspace. <br /></td></tr>
|
|
<tr class="memitem:aa67190f2465d092c35c62d432814a8b3" id="r_aa67190f2465d092c35c62d432814a8b3"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info</a> (<a class="el" href="structL4Re_1_1Dataspace_1_1Stats.html">Stats</a> *stats)</td></tr>
|
|
<tr class="memdesc:aa67190f2465d092c35c62d432814a8b3"><td class="mdescLeft"> </td><td class="mdescRight">Get information on the dataspace. <br /></td></tr>
|
|
<tr class="memitem:ab56d44448cca4a99531904fb3e2cd0df" id="r_ab56d44448cca4a99531904fb3e2cd0df"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab56d44448cca4a99531904fb3e2cd0df">map_info</a> (<a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *start_addr, <a class="el" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *end_addr)</td></tr>
|
|
<tr class="memdesc:ab56d44448cca4a99531904fb3e2cd0df"><td class="mdescLeft"> </td><td class="mdescRight">Get mapping range of dataspace. <br /></td></tr>
|
|
<tr class="inherit_header pub_methods_classL4_1_1Kobject"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4_1_1Kobject')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4_1_1Kobject.html">L4::Kobject</a></td></tr>
|
|
<tr class="memitem:a9fe009599de49f1af438ff49998faec0 inherit pub_methods_classL4_1_1Kobject" id="r_a9fe009599de49f1af438ff49998faec0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Kobject.html#a9fe009599de49f1af438ff49998faec0">dec_refcnt</a> (<a class="el" href="group__l4__basic__types.html#ga51d9492e7700d70ed35838154ca9b279">l4_mword_t</a> diff, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>())</td></tr>
|
|
<tr class="memdesc:a9fe009599de49f1af438ff49998faec0 inherit pub_methods_classL4_1_1Kobject"><td class="mdescLeft"> </td><td class="mdescRight">Decrement the in kernel reference counter for the object. <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< Dataspace, L4::Kobject, L4RE_PROTO_DATASPACE, L4::Type_info::Demand_t< 1 > ></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 Dataspace </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"> </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< PROTO, Dataspace > </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"> </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< Typeid::Iface_list< <a class="el" href="classL4_1_1Kobject__t.html#a0d83157994565e9c01f10006bdda2efa">__Iface</a> >, typename L4::Kobject::__Iface_list > </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"> </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< Dataspace, L4::Kobject, L4RE_PROTO_DATASPACE, L4::Type_info::Demand_t< 1 > ></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>< <a class="el" href="classL4_1_1Kobject__t.html#af7df35ba5bf68ef5993e605a6b62328a">Class</a> > </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"> </td><td class="mdescRight">Get the capability to ourselves. <br /></td></tr>
|
|
<tr class="inherit_header pro_methods_classL4_1_1Kobject"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject.html">L4::Kobject</a></td></tr>
|
|
<tr class="memitem:a4f2117ae76762f4084e6a1adb915863c inherit pro_methods_classL4_1_1Kobject" id="r_a4f2117ae76762f4084e6a1adb915863c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a> () const noexcept</td></tr>
|
|
<tr class="memdesc:a4f2117ae76762f4084e6a1adb915863c inherit pro_methods_classL4_1_1Kobject"><td class="mdescLeft"> </td><td class="mdescRight">Return capability selector. <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< Dataspace, L4::Kobject, L4RE_PROTO_DATASPACE, L4::Type_info::Demand_t< 1 > ></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 </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"> </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>Interface for memory-like objects. </p>
|
|
<p>Dataspaces are a central abstraction provided by <a class="el" href="namespaceL4Re.html" title="L4Re C++ Interfaces.">L4Re</a>. A dataspace is an abstraction for any thing that is available via usual memory access instructions. A dataspace can be a file, as well as the memory-mapped registers of a device, or anonymous memory, such as a heap.</p>
|
|
<p>The dataspace interface defines a set of methods that allow any kind of dataspace to be attached (mapped) to the virtual address space of an <a class="el" href="namespaceL4.html" title="L4 low-level kernel interface.">L4</a> task and then be accessed via memory-access instructions. The <a class="el" href="classL4Re_1_1Rm.html" title="Region map.">L4Re::Rm</a> interface can be used to attach a dataspace to a virtual address space of a task paged by a certain instance of a region map.</p>
|
|
<dl class="section user"><dt>Include File</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include <<a class="code" href="dataspace.html">l4/re/dataspace</a>></span> </div>
|
|
<div class="ttc" id="adataspace_html"><div class="ttname"><a href="dataspace.html">dataspace</a></div><div class="ttdoc">Dataspace interface.</div></div>
|
|
</div><!-- fragment --> </dd></dl>
|
|
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="examples_2libs_2l4re_2c_09_09_2mem_alloc_2ma_09rm_8cc-example.html#_a2">examples/libs/l4re/c++/mem_alloc/ma+rm.cc</a>, <a class="el" href="examples_2libs_2l4re_2c_09_09_2shared_ds_2ds_clnt_8cc-example.html#_a5">examples/libs/l4re/c++/shared_ds/ds_clnt.cc</a>, and <a class="el" href="examples_2libs_2l4re_2c_09_09_2shared_ds_2ds_srv_8cc-example.html#_a10">examples/libs/l4re/c++/shared_ds/ds_srv.cc</a>.</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="dataspace_source.html#l00050">50</a> of file <a class="el" href="dataspace_source.html">dataspace</a>.</p>
|
|
</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="af54638ea6c363bb5096267a0eb89d86a" name="af54638ea6c363bb5096267a0eb89d86a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af54638ea6c363bb5096267a0eb89d86a">◆ </a></span>allocate()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long L4Re::Dataspace::allocate </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">Size</td> <td class="paramname"><span class="paramname"><em>size</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Allocate a range in the dataspace. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">offset</td><td>Offset in the dataspace, in bytes. </td></tr>
|
|
<tr><td class="paramname">size</td><td>Size of the range, in bytes.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">L4_EOK</td><td>Success </td></tr>
|
|
<tr><td class="paramname">-L4_ERANGE</td><td>Given range is outside the dataspace. (A dataspace provider may also silently ignore areas outside the dataspace.) </td></tr>
|
|
<tr><td class="paramname">-L4_ENOMEM</td><td>Not enough memory available. </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p>On success, at least the given range is guaranteed to be allocated. The dataspace manager may also allocate more memory due to page granularity.</p>
|
|
<p>The memory is allocated with the same rights as the dataspace capability. </p>
|
|
|
|
<p class="reference">References <a class="el" href="#af54638ea6c363bb5096267a0eb89d86a">allocate()</a>, <a class="el" href="#a21ba4a8d1053498647834e622daf285a">copy_in()</a>, and <a class="el" href="dataspace__impl_8h_source.html#l00101">size()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#af54638ea6c363bb5096267a0eb89d86a">allocate()</a>.</p>
|
|
<div id="dynsection-2" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_af54638ea6c363bb5096267a0eb89d86a_cgraph.svg" width="1118" height="122"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
<div id="dynsection-3" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_af54638ea6c363bb5096267a0eb89d86a_icgraph.svg" width="202" height="60"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aec6654feafb167a373e056b326a99151" name="aec6654feafb167a373e056b326a99151"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aec6654feafb167a373e056b326a99151">◆ </a></span>clear()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long L4Re::Dataspace::clear </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">Size</td> <td class="paramname"><span class="paramname"><em>size</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Clear parts of a dataspace. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">offset</td><td>Offset within dataspace (in bytes). </td></tr>
|
|
<tr><td class="paramname">size</td><td>Size of region to clear (in 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">-L4_ERANGE</td><td>Given range is outside the dataspace. (A dataspace provider may also silently ignore areas outside the dataspace.) </td></tr>
|
|
<tr><td class="paramname">-L4_EACCESS</td><td>No <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39a561054fb4021ff4a22ab1881c7a7de5a" title="Interface specific 'W' right for capability flexpages.">L4_CAP_FPAGE_W</a> right on dataspace capability. </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p>Zeroes out the memory. Depending on the type of memory the memory could also be deallocated and replaced by a shared zero-page. </p>
|
|
|
|
<p class="reference">References <a class="el" href="#aec6654feafb167a373e056b326a99151">clear()</a>, and <a class="el" href="dataspace__impl_8h_source.html#l00101">size()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#aec6654feafb167a373e056b326a99151">clear()</a>.</p>
|
|
<div id="dynsection-4" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_aec6654feafb167a373e056b326a99151_cgraph.svg" width="1074" height="148"><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-5" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_aec6654feafb167a373e056b326a99151_icgraph.svg" width="182" height="60"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a21ba4a8d1053498647834e622daf285a" name="a21ba4a8d1053498647834e622daf285a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a21ba4a8d1053498647834e622daf285a">◆ </a></span>copy_in()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long L4Re::Dataspace::copy_in </td>
|
|
<td>(</td>
|
|
<td class="paramtype">Offset</td> <td class="paramname"><span class="paramname"><em>dst_offs</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>< <a class="el" href="classL4Re_1_1Dataspace.html">Dataspace</a> ></td> <td class="paramname"><span class="paramname"><em>src</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Offset</td> <td class="paramname"><span class="paramname"><em>src_offs</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Size</td> <td class="paramname"><span class="paramname"><em>size</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Copy contents from another dataspace. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">dst_offs</td><td>Offset in destination dataspace. </td></tr>
|
|
<tr><td class="paramname">src</td><td>Source dataspace to copy from. </td></tr>
|
|
<tr><td class="paramname">src_offs</td><td>Offset in the source dataspace. </td></tr>
|
|
<tr><td class="paramname">size</td><td>Size to copy (in bytes).</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">L4_EOK</td><td>Success </td></tr>
|
|
<tr><td class="paramname">-L4_EACCESS</td><td>No <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39a561054fb4021ff4a22ab1881c7a7de5a" title="Interface specific 'W' right for capability flexpages.">L4_CAP_FPAGE_W</a> right on the destination dataspace. </td></tr>
|
|
<tr><td class="paramname">-L4_EINVAL</td><td>Invalid parameter supplied. </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p>The copy operation may use copy-on-write mechanisms. The operation may also fail if both dataspaces are not from the same dataspace manager or the dataspace managers do not cooperate. </p>
|
|
|
|
<p class="reference">References <a class="el" href="dataspace__impl_8h_source.html#l00111">flags()</a>, and <a class="el" href="dataspace__impl_8h_source.html#l00101">size()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#af54638ea6c363bb5096267a0eb89d86a">allocate()</a>.</p>
|
|
<div id="dynsection-6" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_a21ba4a8d1053498647834e622daf285a_cgraph.svg" width="879" height="110"><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-7" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-7-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-7-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_a21ba4a8d1053498647834e622daf285a_icgraph.svg" width="439" height="60"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af96cd7d2c6fd10bfbbb0b426197a231c" name="af96cd7d2c6fd10bfbbb0b426197a231c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af96cd7d2c6fd10bfbbb0b426197a231c">◆ </a></span>flags()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Dataspace::Flags Dataspace::flags </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td> 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>Get flags of the dataspace. </p>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">>=0</td><td>Flags of the dataspace </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structL4Re_1_1Dataspace_1_1F.html#a62af1272cb958fe0f6cb5e2ab07c2df2" title="Flags for map operations.">L4Re::Dataspace::F::Flags</a> </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="dataspace__impl_8h_source.html#l00111">111</a> of file <a class="el" href="dataspace__impl_8h_source.html">dataspace_impl.h</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="dataspace_source.html#l00129">L4Re::Dataspace::Stats::flags</a>, and <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="vbus_source.html#l00382">L4vbus::Vbus::assign_dma_domain()</a>, <a class="el" href="vbus_source.html#l00357">L4vbus::Vbus::assign_dma_domain()</a>, <a class="el" href="#a21ba4a8d1053498647834e622daf285a">copy_in()</a>, <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>, <a class="el" href="dataspace__impl_8h_source.html#l00085">map()</a>, and <a class="el" href="dataspace__impl_8h_source.html#l00045">map_region()</a>.</p>
|
|
<div id="dynsection-8" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-8-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-8-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_af96cd7d2c6fd10bfbbb0b426197a231c_cgraph.svg" width="642" height="98"><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-9" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-9-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-9-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_af96cd7d2c6fd10bfbbb0b426197a231c_icgraph.svg" width="1299" height="355"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa67190f2465d092c35c62d432814a8b3" name="aa67190f2465d092c35c62d432814a8b3"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa67190f2465d092c35c62d432814a8b3">◆ </a></span>info()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long L4Re::Dataspace::info </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structL4Re_1_1Dataspace_1_1Stats.html">Stats</a> *</td> <td class="paramname"><span class="paramname"><em>stats</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get information on the dataspace. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">stats</td><td><a class="el" href="classL4Re_1_1Dataspace.html" title="Interface for memory-like objects.">Dataspace</a> 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"><0</td><td>IPC errors </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="reference">References <a class="el" href="dataspace__impl_8h_source.html#l00111">flags()</a>, <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>, <a class="el" href="ipc__iface_source.html#l00541">L4_RPC</a>, <a class="el" href="ipc__iface_source.html#l00510">L4_RPC_NF</a>, <a class="el" href="dataspace__impl_8h_source.html#l00085">map()</a>, and <a class="el" href="dataspace_source.html#l00305">map_info()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="dataspace__impl_8h_source.html#l00111">flags()</a>, <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>, and <a class="el" href="dataspace__impl_8h_source.html#l00101">size()</a>.</p>
|
|
<div id="dynsection-10" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-10-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-10-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_aa67190f2465d092c35c62d432814a8b3_cgraph.svg" width="642" height="148"><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-11" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-11-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-11-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_aa67190f2465d092c35c62d432814a8b3_icgraph.svg" width="870" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a1c8539a63573cdd9216d9382e89b0e64" name="a1c8539a63573cdd9216d9382e89b0e64"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1c8539a63573cdd9216d9382e89b0e64">◆ </a></span>map()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long Dataspace::map </td>
|
|
<td>(</td>
|
|
<td class="paramtype">Dataspace::Offset</td> <td class="paramname"><span class="paramname"><em>offset</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Flags</td> <td class="paramname"><span class="paramname"><em>flags</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Map_addr</td> <td class="paramname"><span class="paramname"><em>local_addr</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Map_addr</td> <td class="paramname"><span class="paramname"><em>min_addr</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Map_addr</td> <td class="paramname"><span class="paramname"><em>max_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>< <a class="el" href="classL4_1_1Task.html">L4::Task</a> ></td> <td class="paramname"><span class="paramname"><em>dst</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a><<a class="el" href="classL4_1_1Task.html">L4::Task</a>>::Invalid</span> ) 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>Request a flexpage mapping from the dataspace. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">offset</td><td>Offset to start within dataspace </td></tr>
|
|
<tr><td class="paramname">flags</td><td><a class="el" href="classL4Re_1_1Dataspace.html" title="Interface for memory-like objects.">Dataspace</a> flags, see <a class="el" href="structL4Re_1_1Dataspace_1_1F.html#a62af1272cb958fe0f6cb5e2ab07c2df2" title="Flags for map operations.">L4Re::Dataspace::F::Flags</a>. </td></tr>
|
|
<tr><td class="paramname">local_addr</td><td>Local address to map to. </td></tr>
|
|
<tr><td class="paramname">min_addr</td><td>Defines start of receive window. (Rounded down to page size.) </td></tr>
|
|
<tr><td class="paramname">max_addr</td><td>Defines end of receive window. (Rounded up to page size.) </td></tr>
|
|
<tr><td class="paramname">dst</td><td>Optional destination task of the mapping. If invalid, the callers task is implicitly the destination.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">L4_EOK</td><td>Success </td></tr>
|
|
<tr><td class="paramname">-L4_ERANGE</td><td>Invalid offset. </td></tr>
|
|
<tr><td class="paramname">-L4_EPERM</td><td>Insufficient permission to map with requested rights. </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p>The map call will attempt to map the largest possible flexpage that covers the given local address and still fits into the region defined by <span class="tt">min_addr</span> and <span class="tt">max_addr</span>. If the given region is invalid or does not overlap the local address, the smallest valid page size is used. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="dataspace__impl_8h_source.html#l00085">85</a> of file <a class="el" href="dataspace__impl_8h_source.html">dataspace_impl.h</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="dataspace__impl_8h_source.html#l00111">flags()</a>, and <a class="el" href="l4_2sys_2consts_8h_source.html#l00409">L4_LOG2_PAGESIZE</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>.</p>
|
|
<div id="dynsection-12" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-12-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-12-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_a1c8539a63573cdd9216d9382e89b0e64_cgraph.svg" width="858" height="86"><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-13" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-13-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-13-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_a1c8539a63573cdd9216d9382e89b0e64_icgraph.svg" width="1086" height="355"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ab56d44448cca4a99531904fb3e2cd0df" name="ab56d44448cca4a99531904fb3e2cd0df"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab56d44448cca4a99531904fb3e2cd0df">◆ </a></span>map_info()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long L4Re::Dataspace::map_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>start_addr</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>end_addr</em></span> )</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 mapping range of dataspace. </p>
|
|
<p>In case of a MMU-less system, the dataspace must be mapped at the correct address in the task because virtual and physical address must match. This method returns the start and end address of the physically contiguous buffer backing the dataspace.</p>
|
|
<p>On MMU-enabled system any page aligned address is permissible. On such systems the method is just a stub.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">start_addr</td><td>Start address of dataspace. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">end_addr</td><td>End address (inclusive) of dataspace.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">>0</td><td>Start/end address have been set and need to be obeyed. </td></tr>
|
|
<tr><td class="paramname">0</td><td>No constraint of mapping address. </td></tr>
|
|
<tr><td class="paramname">-L4_EPERM</td><td>Cannot infer mapping address. <a class="el" href="classL4Re_1_1Dataspace.html" title="Interface for memory-like objects.">Dataspace</a> not mappable. </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="dataspace_source.html#l00305">305</a> of file <a class="el" href="dataspace_source.html">dataspace</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>.</p>
|
|
<div id="dynsection-14" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-14-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-14-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_ab56d44448cca4a99531904fb3e2cd0df_icgraph.svg" width="1118" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a971cf0d6a16afe265efbd4a40a2f6d03" name="a971cf0d6a16afe265efbd4a40a2f6d03"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a971cf0d6a16afe265efbd4a40a2f6d03">◆ </a></span>map_region()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">long Dataspace::map_region </td>
|
|
<td>(</td>
|
|
<td class="paramtype">Dataspace::Offset</td> <td class="paramname"><span class="paramname"><em>offset</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Flags</td> <td class="paramname"><span class="paramname"><em>flags</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Map_addr</td> <td class="paramname"><span class="paramname"><em>min_addr</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">Dataspace::Map_addr</td> <td class="paramname"><span class="paramname"><em>max_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>< <a class="el" href="classL4_1_1Task.html">L4::Task</a> ></td> <td class="paramname"><span class="paramname"><em>dst</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a><<a class="el" href="classL4_1_1Task.html">L4::Task</a>>::Invalid</span> ) 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>Map a part of a dataspace into a local memory area. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">offset</td><td>Offset to start within dataspace. </td></tr>
|
|
<tr><td class="paramname">flags</td><td><a class="el" href="classL4Re_1_1Dataspace.html" title="Interface for memory-like objects.">Dataspace</a> flags, see <a class="el" href="structL4Re_1_1Dataspace_1_1F.html#a62af1272cb958fe0f6cb5e2ab07c2df2" title="Flags for map operations.">L4Re::Dataspace::F::Flags</a>. </td></tr>
|
|
<tr><td class="paramname">min_addr</td><td>(Inclusive) start of the receive area. </td></tr>
|
|
<tr><td class="paramname">max_addr</td><td>(Exclusive) end of receive area. </td></tr>
|
|
<tr><td class="paramname">dst</td><td>Optional destination task of the mapping. If invalid, the callers task is implicitly the destination.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">L4_EOK</td><td>Success </td></tr>
|
|
<tr><td class="paramname">-L4_ERANGE</td><td>Invalid offset or receive area larger than the dataspace. </td></tr>
|
|
<tr><td class="paramname">-L4_EPERM</td><td>Insufficient permission to map with requested rights. </td></tr>
|
|
<tr><td class="paramname"><0</td><td>IPC errors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p>This is a convenience function which maps flexpages consecutively into the given memory area in the local task. The area is expected to be filled completely. If the dataspace is not large enough to provide the mappings for the entire size of the area, then an error is returned. Mappings may or may not have been already established at that point.</p>
|
|
<p><span class="tt">offset</span> and <span class="tt">min_addr</span> are rounded down to the next <span class="tt"><a class="el" href="group__l4__memory__api.html#gabecf862d8b8f39ad28af45d7fc949dd5" title="Minimal page size (in bytes).">L4_PAGESIZE</a></span> boundary when necessary. <span class="tt">max_addr</span> is rounded up to the page boundary. If the resulting maximum address is less or equal than the minimum address, then the function is a noop. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="dataspace__impl_8h_source.html#l00045">45</a> of file <a class="el" href="dataspace__impl_8h_source.html">dataspace_impl.h</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="dataspace__impl_8h_source.html#l00111">flags()</a>, <a class="el" href="l4_2sys_2consts_8h_source.html#l00409">L4_LOG2_PAGESIZE</a>, <a class="el" href="compiler_8h_source.html#l00284">L4_UNLIKELY</a>, <a class="el" href="sys_2cxx_2consts_source.html#l00032">L4::round_order()</a>, and <a class="el" href="sys_2cxx_2consts_source.html#l00018">L4::trunc_order()</a>.</p>
|
|
<div id="dynsection-15" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-15-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-15-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_a971cf0d6a16afe265efbd4a40a2f6d03_cgraph.svg" width="858" height="196"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ace7817f743e42404bcfe0a0e348884e1" name="ace7817f743e42404bcfe0a0e348884e1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ace7817f743e42404bcfe0a0e348884e1">◆ </a></span>size()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Dataspace::Size Dataspace::size </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td> 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>Get size of a dataspace. </p>
|
|
<dl class="section return"><dt>Returns</dt><dd>Size of the dataspace in bytes. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="dataspace__impl_8h_source.html#l00101">101</a> of file <a class="el" href="dataspace__impl_8h_source.html">dataspace_impl.h</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="#aa67190f2465d092c35c62d432814a8b3">info()</a>, and <a class="el" href="dataspace_source.html#l00128">L4Re::Dataspace::Stats::size</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#af54638ea6c363bb5096267a0eb89d86a">allocate()</a>, <a class="el" href="#aec6654feafb167a373e056b326a99151">clear()</a>, and <a class="el" href="#a21ba4a8d1053498647834e622daf285a">copy_in()</a>.</p>
|
|
<div id="dynsection-16" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-16-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-16-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_ace7817f743e42404bcfe0a0e348884e1_cgraph.svg" width="855" height="148"><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-17" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-17-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-17-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4Re_1_1Dataspace_ace7817f743e42404bcfe0a0e348884e1_icgraph.svg" width="652" height="132"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this class was generated from the following files:<ul>
|
|
<li>l4/re/<a class="el" href="dataspace_source.html">dataspace</a></li>
|
|
<li>l4/re/impl/<a class="el" href="dataspace__impl_8h_source.html">dataspace_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="namespaceL4Re.html">L4Re</a></li><li class="navelem"><a href="classL4Re_1_1Dataspace.html">Dataspace</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>
|