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

636 lines
51 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: L4::Ipc Namespace 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('namespaceL4_1_1Ipc.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">L4::Ipc Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>IPC related functionality.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-namespaces" class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:Msg" id="r_Msg"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceL4_1_1Ipc_1_1Msg.html">Msg</a></td></tr>
<tr class="memdesc:namespaceL4_1_1Ipc_1_1Msg"><td class="mdescLeft">&#160;</td><td class="mdescRight">IPC Message related functionality. <br /></td></tr>
</table><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:Array_5Fref" id="r_Array_5Fref"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Array__ref.html">Array_ref</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structL4_1_1Ipc_1_1Array.html" title="Array data type for dynamically sized arrays in RPCs.">Array</a> reference data type for arrays located in the message. <a href="structL4_1_1Ipc_1_1Array__ref.html#details">More...</a><br /></td></tr>
<tr class="memitem:Array" id="r_Array"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Array.html">Array</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structL4_1_1Ipc_1_1Array.html" title="Array data type for dynamically sized arrays in RPCs.">Array</a> data type for dynamically sized arrays in RPCs. <a href="structL4_1_1Ipc_1_1Array.html#details">More...</a><br /></td></tr>
<tr class="memitem:Array_5Fin_5Fbuf" id="r_Array_5Fin_5Fbuf"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Array__in__buf.html">Array_in_buf</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Server-side copy in buffer for <a class="el" href="structL4_1_1Ipc_1_1Array.html" title="Array data type for dynamically sized arrays in RPCs.">Array</a>. <a href="structL4_1_1Ipc_1_1Array__in__buf.html#details">More...</a><br /></td></tr>
<tr class="memitem:Call" id="r_Call"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Call.html">Call</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">RPC attribute for a standard RPC call. <a href="structL4_1_1Ipc_1_1Call.html#details">More...</a><br /></td></tr>
<tr class="memitem:Call_5Fzero_5Fsend_5Ftimeout" id="r_Call_5Fzero_5Fsend_5Ftimeout"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Call__zero__send__timeout.html">Call_zero_send_timeout</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">RPC attribute for an RPC call, with zero send timeout. <a href="structL4_1_1Ipc_1_1Call__zero__send__timeout.html#details">More...</a><br /></td></tr>
<tr class="memitem:Call_5Ft" id="r_Call_5Ft"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Call__t.html">Call_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">RPC attribute for an RPC call with required rights. <a href="structL4_1_1Ipc_1_1Call__t.html#details">More...</a><br /></td></tr>
<tr class="memitem:Send_5Fonly" id="r_Send_5Fonly"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Send__only.html">Send_only</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">RPC attribute for a send-only RPC. <a href="structL4_1_1Ipc_1_1Send__only.html#details">More...</a><br /></td></tr>
<tr class="memitem:Ret_5Farray" id="r_Ret_5Farray"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Ret__array.html">Ret_array</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dynamically sized output array of type T. <a href="structL4_1_1Ipc_1_1Ret__array.html#details">More...</a><br /></td></tr>
<tr class="memitem:Out" id="r_Out"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Out.html">Out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an argument as a output value in an RPC signature. <a href="structL4_1_1Ipc_1_1Out.html#details">More...</a><br /></td></tr>
<tr class="memitem:In_5Fout" id="r_In_5Fout"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1In__out.html">In_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an argument as in-out argument. <a href="structL4_1_1Ipc_1_1In__out.html#details">More...</a><br /></td></tr>
<tr class="memitem:As_5Fvalue" id="r_As_5Fvalue"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1As__value.html">As_value</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pass the argument as plain data value. <a href="structL4_1_1Ipc_1_1As__value.html#details">More...</a><br /></td></tr>
<tr class="memitem:Opt" id="r_Opt"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Ipc_1_1Opt.html">Opt</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attribute for defining an optional RPC argument. <a href="structL4_1_1Ipc_1_1Opt.html#details">More...</a><br /></td></tr>
<tr class="memitem:Small_5Fbuf" id="r_Small_5Fbuf"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Small__buf.html">Small_buf</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A receive item for receiving a single object capability. <a href="classL4_1_1Ipc_1_1Small__buf.html#details">More...</a><br /></td></tr>
<tr class="memitem:Gen_5Ffpage" id="r_Gen_5Ffpage"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Gen__fpage.html">Gen_fpage</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generic RPC base for typed message items. <a href="classL4_1_1Ipc_1_1Gen__fpage.html#details">More...</a><br /></td></tr>
<tr class="memitem:Snd_5Ffpage" id="r_Snd_5Ffpage"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Snd__fpage.html">Snd_fpage</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send item or return item. <a href="classL4_1_1Ipc_1_1Snd__fpage.html#details">More...</a><br /></td></tr>
<tr class="memitem:Rcv_5Ffpage" id="r_Rcv_5Ffpage"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Rcv__fpage.html">Rcv_fpage</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-small receive item. <a href="classL4_1_1Ipc_1_1Rcv__fpage.html#details">More...</a><br /></td></tr>
<tr class="memitem:Cap" id="r_Cap"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capability type for RPC interfaces (see <span class="tt"><a class="el" href="classL4_1_1Cap.html" title="C++ interface for capabilities.">L4::Cap</a>&lt;T&gt;</span>). <a href="classL4_1_1Ipc_1_1Cap.html#details">More...</a><br /></td></tr>
<tr class="memitem:Varg" id="r_Varg"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Varg.html">Varg</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variably sized RPC argument. <a href="classL4_1_1Ipc_1_1Varg.html#details">More...</a><br /></td></tr>
<tr class="memitem:Varg_5Flist" id="r_Varg_5Flist"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Varg__list.html">Varg_list</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Self-contained list of variable-sized RPC parameters. <a href="classL4_1_1Ipc_1_1Varg__list.html#details">More...</a><br /></td></tr>
<tr class="memitem:Varg_5Flist_5Fref" id="r_Varg_5Flist_5Fref"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Varg__list__ref.html">Varg_list_ref</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of variable-sized RPC parameters as received by the server. <a href="classL4_1_1Ipc_1_1Varg__list__ref.html#details">More...</a><br /></td></tr>
<tr class="memitem:Str_5Fcp_5Fin" id="r_Str_5Fcp_5Fin"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Str__cp__in.html">Str_cp_in</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstraction for extracting a zero-terminated string from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. <a href="classL4_1_1Ipc_1_1Str__cp__in.html#details">More...</a><br /></td></tr>
<tr class="memitem:Msg_5Fptr" id="r_Msg_5Fptr"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html">Msg_ptr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to an element of type T in an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. <a href="classL4_1_1Ipc_1_1Msg__ptr.html#details">More...</a><br /></td></tr>
<tr class="memitem:Istream" id="r_Istream"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Istream.html">Istream</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input stream for IPC unmarshalling. <a href="classL4_1_1Ipc_1_1Istream.html#details">More...</a><br /></td></tr>
<tr class="memitem:Ostream" id="r_Ostream"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Ostream.html">Ostream</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output stream for IPC marshalling. <a href="classL4_1_1Ipc_1_1Ostream.html#details">More...</a><br /></td></tr>
<tr class="memitem:Iostream" id="r_Iostream"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Ipc_1_1Iostream.html">Iostream</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/Output stream for IPC [un]marshalling. <a href="classL4_1_1Ipc_1_1Iostream.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-typedef-members" class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ac16356508a887dcf1f64574d6ca34af9" id="r_ac16356508a887dcf1f64574d6ca34af9"><td class="memItemLeft" align="right" valign="top"><a id="ac16356508a887dcf1f64574d6ca34af9" name="ac16356508a887dcf1f64574d6ca34af9"></a>
typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><b>Array_len_default</b></td></tr>
<tr class="memdesc:ac16356508a887dcf1f64574d6ca34af9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default type for passing length of an array. <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:a2bad64d85342191b358597cd08e55574" id="r_a2bad64d85342191b358597cd08e55574"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a2bad64d85342191b358597cd08e55574 template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2bad64d85342191b358597cd08e55574">make_cap</a> (<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt; cap, unsigned rights) noexcept</td></tr>
<tr class="memdesc:a2bad64d85342191b358597cd08e55574"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make an <a class="el" href="classL4_1_1Ipc_1_1Cap.html" title="Capability type for RPC interfaces (see L4::Cap&lt;T&gt;).">L4::Ipc::Cap&lt;T&gt;</a> for the given capability and rights. <br /></td></tr>
<tr class="memitem:aa6b9422f850eb175240c9d18c5cc708c" id="r_aa6b9422f850eb175240c9d18c5cc708c"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:aa6b9422f850eb175240c9d18c5cc708c template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa6b9422f850eb175240c9d18c5cc708c">make_cap_rw</a> (<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt; cap) noexcept</td></tr>
<tr class="memdesc:aa6b9422f850eb175240c9d18c5cc708c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make an <a class="el" href="classL4_1_1Ipc_1_1Cap.html" title="Capability type for RPC interfaces (see L4::Cap&lt;T&gt;).">L4::Ipc::Cap&lt;T&gt;</a> for the given capability with <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39a3cca0a716e3eb64c770567932460203f" title="Read and interface specific &#39;W&#39; right for capability flexpages.">L4_CAP_FPAGE_RW</a> rights. <br /></td></tr>
<tr class="memitem:aeb1cb70be897c876772d7f15ba545839" id="r_aeb1cb70be897c876772d7f15ba545839"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:aeb1cb70be897c876772d7f15ba545839 template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aeb1cb70be897c876772d7f15ba545839">make_cap_rws</a> (<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt; cap) noexcept</td></tr>
<tr class="memdesc:aeb1cb70be897c876772d7f15ba545839"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make an <a class="el" href="classL4_1_1Ipc_1_1Cap.html" title="Capability type for RPC interfaces (see L4::Cap&lt;T&gt;).">L4::Ipc::Cap&lt;T&gt;</a> for the given capability with <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39abf42b05aa006bc62a22f1be1aa760020" title="Read, interface specific &#39;W&#39;, and &#39;S&#39; rights for capability flexpages.">L4_CAP_FPAGE_RWS</a> rights. <br /></td></tr>
<tr class="memitem:a3f3e35f220d7a35dd2ca3d012ef05008" id="r_a3f3e35f220d7a35dd2ca3d012ef05008"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a3f3e35f220d7a35dd2ca3d012ef05008 template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3f3e35f220d7a35dd2ca3d012ef05008">make_cap_full</a> (<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt; cap) noexcept</td></tr>
<tr class="memdesc:a3f3e35f220d7a35dd2ca3d012ef05008"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make an L4::IPC::Cap&lt;T&gt; for the given capability with full fpage and object-specific rights. <br /></td></tr>
<tr class="memitem:a57f3a70c8396ed77fd006b84f44023e4" id="r_a57f3a70c8396ed77fd006b84f44023e4"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a57f3a70c8396ed77fd006b84f44023e4 template"><td class="memItemLeft" align="right" valign="top">Internal::Buf_cp_out&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a57f3a70c8396ed77fd006b84f44023e4">buf_cp_out</a> (T const *v, unsigned long size)</td></tr>
<tr class="memdesc:a57f3a70c8396ed77fd006b84f44023e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert an array into an <a class="el" href="classL4_1_1Ipc_1_1Ostream.html" title="Output stream for IPC marshalling.">Ipc::Ostream</a>. <br /></td></tr>
<tr class="memitem:a7a3b27526de8d5179e8906968d2b90ee" id="r_a7a3b27526de8d5179e8906968d2b90ee"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a7a3b27526de8d5179e8906968d2b90ee template"><td class="memItemLeft" align="right" valign="top">Internal::Buf_cp_in&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7a3b27526de8d5179e8906968d2b90ee">buf_cp_in</a> (T *v, unsigned long &amp;size)</td></tr>
<tr class="memdesc:a7a3b27526de8d5179e8906968d2b90ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extract an array from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. <br /></td></tr>
<tr class="memitem:a3631594384493d8e2878ca2899dcc886" id="r_a3631594384493d8e2878ca2899dcc886"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a3631594384493d8e2878ca2899dcc886 template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Ipc_1_1Str__cp__in.html">Str_cp_in</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3631594384493d8e2878ca2899dcc886">str_cp_in</a> (T *v, unsigned long &amp;size)</td></tr>
<tr class="memdesc:a3631594384493d8e2878ca2899dcc886"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classL4_1_1Ipc_1_1Str__cp__in.html" title="Abstraction for extracting a zero-terminated string from an Ipc::Istream.">Str_cp_in</a> for the given values. <br /></td></tr>
<tr class="memitem:ab252ad2428ad3644d59df26fe24ec112" id="r_ab252ad2428ad3644d59df26fe24ec112"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:ab252ad2428ad3644d59df26fe24ec112 template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html">Msg_ptr</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab252ad2428ad3644d59df26fe24ec112">msg_ptr</a> (T *&amp;p)</td></tr>
<tr class="memdesc:ab252ad2428ad3644d59df26fe24ec112"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an <a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html" title="Pointer to an element of type T in an Ipc::Istream.">Msg_ptr</a> to adjust the given pointer. <br /></td></tr>
<tr class="memitem:a4a9721744594b5fb52cccb6fc51eb6d2" id="r_a4a9721744594b5fb52cccb6fc51eb6d2"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:a4a9721744594b5fb52cccb6fc51eb6d2 template"><td class="memItemLeft" align="right" valign="top">Internal::Buf_in&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4a9721744594b5fb52cccb6fc51eb6d2">buf_in</a> (T *&amp;v, unsigned long &amp;size)</td></tr>
<tr class="memdesc:a4a9721744594b5fb52cccb6fc51eb6d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to stream array data. <br /></td></tr>
<tr class="memitem:acc2cd40991fdf32a8259649933609fd1" id="r_acc2cd40991fdf32a8259649933609fd1"><td class="memTemplParams" colspan="2">template&lt;typename T&gt; </td></tr>
<tr class="memitem:acc2cd40991fdf32a8259649933609fd1 template"><td class="memItemLeft" align="right" valign="top">T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acc2cd40991fdf32a8259649933609fd1">read</a> (<a class="el" href="classL4_1_1Ipc_1_1Istream.html">Istream</a> &amp;s)</td></tr>
<tr class="memdesc:acc2cd40991fdf32a8259649933609fd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value out of a stream. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>IPC related functionality. </p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="a7a3b27526de8d5179e8906968d2b90ee" name="a7a3b27526de8d5179e8906968d2b90ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a3b27526de8d5179e8906968d2b90ee">&#9670;&#160;</a></span>buf_cp_in()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="memname">
<tr>
<td class="memname">Internal::Buf_cp_in&lt; T &gt; L4::Ipc::buf_cp_in </td>
<td>(</td>
<td class="paramtype">T *</td> <td class="paramname"><span class="paramname"><em>v</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long &amp;</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Extract an array from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">v</td><td>Pointer to the array that shall receive the values from the <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">size</td><td>Input: the number of elements the array can take at most <br />
Output: the number of elements found in the stream.</td></tr>
</table>
</dd>
</dl>
<p><a class="el" href="#a7a3b27526de8d5179e8906968d2b90ee" title="Extract an array from an Ipc::Istream.">buf_cp_in()</a> can be used to extract an array from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. This is the counterpart <a class="el" href="#a57f3a70c8396ed77fd006b84f44023e4" title="Insert an array into an Ipc::Ostream.">buf_cp_out()</a>. The data from the received message is thereby copied to the given buffer and size is set to the number of elements found in the stream. To avoid the copy operation <a class="el" href="#a4a9721744594b5fb52cccb6fc51eb6d2" title="Return a pointer to stream array data.">buf_in()</a> may be used instead.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a4a9721744594b5fb52cccb6fc51eb6d2" title="Return a pointer to stream array data.">buf_in()</a> and <a class="el" href="#a57f3a70c8396ed77fd006b84f44023e4" title="Insert an array into an Ipc::Ostream.">buf_cp_out()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ipc__stream_source.html#l00159">159</a> of file <a class="el" href="ipc__stream_source.html">ipc_stream</a>.</p>
</div>
</div>
<a id="a57f3a70c8396ed77fd006b84f44023e4" name="a57f3a70c8396ed77fd006b84f44023e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57f3a70c8396ed77fd006b84f44023e4">&#9670;&#160;</a></span>buf_cp_out()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="memname">
<tr>
<td class="memname">Internal::Buf_cp_out&lt; T &gt; L4::Ipc::buf_cp_out </td>
<td>(</td>
<td class="paramtype">T const *</td> <td class="paramname"><span class="paramname"><em>v</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>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert an array into an <a class="el" href="classL4_1_1Ipc_1_1Ostream.html" title="Output stream for IPC marshalling.">Ipc::Ostream</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">v</td><td>Pointer to the array that shall be inserted into an <a class="el" href="classL4_1_1Ipc_1_1Ostream.html" title="Output stream for IPC marshalling.">Ipc::Ostream</a>. </td></tr>
<tr><td class="paramname">size</td><td>Number of elements in the array.</td></tr>
</table>
</dd>
</dl>
<p>This function inserts an array (e.g. a string) into an <a class="el" href="classL4_1_1Ipc_1_1Ostream.html" title="Output stream for IPC marshalling.">Ipc::Ostream</a>. The data is copied to the stream. On insertion into the <a class="el" href="classL4_1_1Ipc_1_1Ostream.html" title="Output stream for IPC marshalling.">Ipc::Ostream</a> exactly the given number of elements of type T are copied to the message buffer, this means the source buffer is no longer referenced after insertion into the stream.</p>
<dl class="section see"><dt>See also</dt><dd>The counterpart is either <a class="el" href="#a7a3b27526de8d5179e8906968d2b90ee" title="Extract an array from an Ipc::Istream.">buf_cp_in()</a> or <a class="el" href="#a4a9721744594b5fb52cccb6fc51eb6d2" title="Return a pointer to stream array data.">buf_in()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ipc__stream_source.html#l00100">100</a> of file <a class="el" href="ipc__stream_source.html">ipc_stream</a>.</p>
</div>
</div>
<a id="a4a9721744594b5fb52cccb6fc51eb6d2" name="a4a9721744594b5fb52cccb6fc51eb6d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a9721744594b5fb52cccb6fc51eb6d2">&#9670;&#160;</a></span>buf_in()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="memname">
<tr>
<td class="memname">Internal::Buf_in&lt; T &gt; L4::Ipc::buf_in </td>
<td>(</td>
<td class="paramtype">T *&amp;</td> <td class="paramname"><span class="paramname"><em>v</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long &amp;</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a pointer to stream array data. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>Pointer to the array within the <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>The number of elements found in the stream.</td></tr>
</table>
</dd>
</dl>
<p>This routine provides a possibility to extract an array from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>, without extra copy overhead. In contrast to <a class="el" href="#a7a3b27526de8d5179e8906968d2b90ee" title="Extract an array from an Ipc::Istream.">buf_cp_in()</a> the data is not copied to a buffer, but a pointer to the array is returned. The user must make sure the UTCB is not used for other purposes while the returned pointer is still in use.</p>
<p>The mechanism is comparable to that of <a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html" title="Pointer to an element of type T in an Ipc::Istream.">Msg_ptr</a>, however it handles arrays inserted with <a class="el" href="#a57f3a70c8396ed77fd006b84f44023e4" title="Insert an array into an Ipc::Ostream.">buf_cp_out()</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a7a3b27526de8d5179e8906968d2b90ee" title="Extract an array from an Ipc::Istream.">buf_cp_in()</a> and <a class="el" href="#a57f3a70c8396ed77fd006b84f44023e4" title="Insert an array into an Ipc::Ostream.">buf_cp_out()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ipc__stream_source.html#l00310">310</a> of file <a class="el" href="ipc__stream_source.html">ipc_stream</a>.</p>
</div>
</div>
<a id="a2bad64d85342191b358597cd08e55574" name="a2bad64d85342191b358597cd08e55574"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bad64d85342191b358597cd08e55574">&#9670;&#160;</a></span>make_cap()</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"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt; L4::Ipc::make_cap </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt;</td> <td class="paramname"><span class="paramname"><em>cap</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>rights</em></span>&#160;)</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>Make an <a class="el" href="classL4_1_1Ipc_1_1Cap.html" title="Capability type for RPC interfaces (see L4::Cap&lt;T&gt;).">L4::Ipc::Cap&lt;T&gt;</a> for the given capability and rights. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>(IMPLICIT) type of the referenced interface </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cap</td><td>source capability (<a class="el" href="classL4_1_1Cap.html" title="C++ interface for capabilities.">L4::Cap&lt;T&gt;</a>) </td></tr>
<tr><td class="paramname">rights</td><td>rights mask that shall be applied on transfer. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="ipc__types_source.html#l00785">785</a> of file <a class="el" href="ipc__types_source.html">ipc_types</a>.</p>
<p class="reference">Referenced by <a class="el" href="server_2l4virtio_source.html#l00498">L4virtio::Svr::Driver_mem_region_t&lt; No_custom_data &gt;::Driver_mem_region_t()</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>Here is the caller graph for this function:</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="namespaceL4_1_1Ipc_a2bad64d85342191b358597cd08e55574_icgraph.svg" width="420" height="66"><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="a3f3e35f220d7a35dd2ca3d012ef05008" name="a3f3e35f220d7a35dd2ca3d012ef05008"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f3e35f220d7a35dd2ca3d012ef05008">&#9670;&#160;</a></span>make_cap_full()</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"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt; L4::Ipc::make_cap_full </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt;</td> <td class="paramname"><span class="paramname"><em>cap</em></span></td><td>)</td>
<td></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>Make an L4::IPC::Cap&lt;T&gt; for the given capability with full fpage and object-specific rights. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>(implicit) type of the referenced interface </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cap</td><td>source capability (<a class="el" href="classL4_1_1Cap.html" title="C++ interface for capabilities.">L4::Cap&lt;T&gt;</a>)</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__l4__fpage__api.html#gaee60789a48cab2782f5a368237591b39" title="Object flexpage rights.">L4_cap_fpage_rights</a> </dd>
<dd>
<a class="el" href="group__l4__msgitem__api.html#gad142e99a533af52d358f9940fa00966a" title="Attributes and additional permissions for object send items.">L4_obj_fpage_ctl</a></dd></dl>
<dl class="section note"><dt>Note</dt><dd>Full rights (including object-specific rights) are required when mapping an IPC gate where the receiver should become the server, i.e. where the receiver wants to call <a class="el" href="classL4_1_1Rcv__endpoint.html#a44d288dd670226f6845b5bd8c973b15e" title="Bind the IPC receive endpoint to a thread.">L4::Ipc_gate::bind_thread()</a> or <a class="el" href="classL4_1_1Rcv__endpoint.html#a704d82925cec6c9827a9bfcfb062859a" title="Bind a send destination (a thread or thread group) to an IPC receive endpoint.">L4::Ipc_gate::bind_snd_destination()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ipc__types_source.html#l00824">824</a> of file <a class="el" href="ipc__types_source.html">ipc_types</a>.</p>
<p class="reference">References <a class="el" href="____l4__fpage_8h_source.html#l00212">L4_CAP_FPAGE_RWSD</a>, and <a class="el" href="____l4__fpage_8h_source.html#l00270">L4_FPAGE_C_OBJ_RIGHTS</a>.</p>
</div>
</div>
<a id="aa6b9422f850eb175240c9d18c5cc708c" name="aa6b9422f850eb175240c9d18c5cc708c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6b9422f850eb175240c9d18c5cc708c">&#9670;&#160;</a></span>make_cap_rw()</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"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt; L4::Ipc::make_cap_rw </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt;</td> <td class="paramname"><span class="paramname"><em>cap</em></span></td><td>)</td>
<td></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>Make an <a class="el" href="classL4_1_1Ipc_1_1Cap.html" title="Capability type for RPC interfaces (see L4::Cap&lt;T&gt;).">L4::Ipc::Cap&lt;T&gt;</a> for the given capability with <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39a3cca0a716e3eb64c770567932460203f" title="Read and interface specific &#39;W&#39; right for capability flexpages.">L4_CAP_FPAGE_RW</a> rights. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>(IMPLICIT) type of the referenced interface </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cap</td><td>source capability (<a class="el" href="classL4_1_1Cap.html" title="C++ interface for capabilities.">L4::Cap&lt;T&gt;</a>) </td></tr>
</table>
</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#_a9">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#_a10">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#_a16">examples/libs/l4re/c++/shared_ds/ds_srv.cc</a>.</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="ipc__types_source.html#l00795">795</a> of file <a class="el" href="ipc__types_source.html">ipc_types</a>.</p>
<p class="reference">References <a class="el" href="____l4__fpage_8h_source.html#l00192">L4_CAP_FPAGE_RW</a>.</p>
<p class="reference">Referenced by <a class="el" href="event__buffer_source.html#l00045">L4Re::Util::Event_buffer_t&lt; Default_event_payload &gt;::attach()</a>, <a class="el" href="client_2l4virtio_source.html#l00056">L4virtio::Driver::Device::driver_connect()</a>, <a class="el" href="util_2event_source.html#l00059">L4Re::Util::Event_t&lt; Default_event_payload &gt;::init()</a>, <a class="el" href="util_2event_source.html#l00112">L4Re::Util::Event_t&lt; Default_event_payload &gt;::init_poll()</a>, <a class="el" href="client_2l4virtio_source.html#l00196">L4virtio::Driver::Device::register_ds()</a>, <a class="el" href="client_2virtio-block_source.html#l00092">L4virtio::Driver::Block_device::setup_device()</a>, and <a class="el" href="virtio-net_source.html#l00066">L4virtio::Driver::Virtio_net_device::setup_device()</a>.</p>
<div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="namespaceL4_1_1Ipc_aa6b9422f850eb175240c9d18c5cc708c_icgraph.svg" width="663" height="454"><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="aeb1cb70be897c876772d7f15ba545839" name="aeb1cb70be897c876772d7f15ba545839"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb1cb70be897c876772d7f15ba545839">&#9670;&#160;</a></span>make_cap_rws()</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"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Cap</a>&lt; T &gt; L4::Ipc::make_cap_rws </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; T &gt;</td> <td class="paramname"><span class="paramname"><em>cap</em></span></td><td>)</td>
<td></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>Make an <a class="el" href="classL4_1_1Ipc_1_1Cap.html" title="Capability type for RPC interfaces (see L4::Cap&lt;T&gt;).">L4::Ipc::Cap&lt;T&gt;</a> for the given capability with <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39abf42b05aa006bc62a22f1be1aa760020" title="Read, interface specific &#39;W&#39;, and &#39;S&#39; rights for capability flexpages.">L4_CAP_FPAGE_RWS</a> rights. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>(IMPLICIT) type of the referenced interface </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cap</td><td>source capability (<a class="el" href="classL4_1_1Cap.html" title="C++ interface for capabilities.">L4::Cap&lt;T&gt;</a>) </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="ipc__types_source.html#l00805">805</a> of file <a class="el" href="ipc__types_source.html">ipc_types</a>.</p>
<p class="reference">References <a class="el" href="____l4__fpage_8h_source.html#l00206">L4_CAP_FPAGE_RWS</a>.</p>
</div>
</div>
<a id="ab252ad2428ad3644d59df26fe24ec112" name="ab252ad2428ad3644d59df26fe24ec112"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab252ad2428ad3644d59df26fe24ec112">&#9670;&#160;</a></span>msg_ptr()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html">Msg_ptr</a>&lt; T &gt; L4::Ipc::msg_ptr </td>
<td>(</td>
<td class="paramtype">T *&amp;</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an <a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html" title="Pointer to an element of type T in an Ipc::Istream.">Msg_ptr</a> to adjust the given pointer. </p>
<p>This function makes it more convenient to extract pointers to data in the message buffer itself from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. This may be used to avoid copy out of large data structures. (See <a class="el" href="classL4_1_1Ipc_1_1Msg__ptr.html" title="Pointer to an element of type T in an Ipc::Istream.">Msg_ptr</a>.) </p>
<p class="definition">Definition at line <a class="el" href="ipc__stream_source.html#l00252">252</a> of file <a class="el" href="ipc__stream_source.html">ipc_stream</a>.</p>
</div>
</div>
<a id="acc2cd40991fdf32a8259649933609fd1" name="acc2cd40991fdf32a8259649933609fd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc2cd40991fdf32a8259649933609fd1">&#9670;&#160;</a></span>read()</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">T L4::Ipc::read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4_1_1Ipc_1_1Istream.html">Istream</a> &amp;</td> <td class="paramname"><span class="paramname"><em>s</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>Read a value out of a stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>An <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Istream</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value of type <span class="tt">T</span>.</dd></dl>
<p>The stream position is progressed accordingly. </p>
<p class="definition">Definition at line <a class="el" href="ipc__stream_source.html#l01289">1289</a> of file <a class="el" href="ipc__stream_source.html">ipc_stream</a>.</p>
</div>
</div>
<a id="a3631594384493d8e2878ca2899dcc886" name="a3631594384493d8e2878ca2899dcc886"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3631594384493d8e2878ca2899dcc886">&#9670;&#160;</a></span>str_cp_in()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classL4_1_1Ipc_1_1Str__cp__in.html">Str_cp_in</a>&lt; T &gt; L4::Ipc::str_cp_in </td>
<td>(</td>
<td class="paramtype">T *</td> <td class="paramname"><span class="paramname"><em>v</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long &amp;</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="classL4_1_1Ipc_1_1Str__cp__in.html" title="Abstraction for extracting a zero-terminated string from an Ipc::Istream.">Str_cp_in</a> for the given values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">v</td><td>Pointer to the array that shall receive the values from the <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a>. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">size</td><td>Input: the number of elements the array can take at most <br />
Output: the number of elements found in the stream.</td></tr>
</table>
</dd>
</dl>
<p>This function makes it more convenient to extract arrays from an <a class="el" href="classL4_1_1Ipc_1_1Istream.html" title="Input stream for IPC unmarshalling.">Ipc::Istream</a> (</p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classL4_1_1Ipc_1_1Str__cp__in.html" title="Abstraction for extracting a zero-terminated string from an Ipc::Istream.">Str_cp_in</a>.) </dd></dl>
<p class="definition">Definition at line <a class="el" href="ipc__stream_source.html#l00213">213</a> of file <a class="el" href="ipc__stream_source.html">ipc_stream</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="navelem"><a href="namespaceL4.html">L4</a></li><li class="navelem"><a href="namespaceL4_1_1Ipc.html">Ipc</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>