957 lines
176 KiB
HTML
957 lines
176 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/cxx/ipc_stream Source File</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('ipc__stream_source.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">ipc_stream</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="ipc__stream.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// vi:set ft=cpp: -*- Mode: C++ -*-</span></div>
|
|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">/*</span></div>
|
|
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,</span></div>
|
|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * Alexander Warg <warg@os.inf.tu-dresden.de>,</span></div>
|
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * Torsten Frenzel <frenzel@os.inf.tu-dresden.de></span></div>
|
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * economic rights: Technische Universität Dresden (Germany)</span></div>
|
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
|
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * License: see LICENSE.spdx (in this directory or the directories above)</span></div>
|
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> */</span></div>
|
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#pragma once</span></div>
|
|
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
|
|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include <<a class="code" href="l4_2sys_2ipc_8h.html">l4/sys/ipc.h</a>></span></div>
|
|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include <<a class="code" href="capability.html">l4/sys/capability</a>></span></div>
|
|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include <<a class="code" href="ipc__types.html">l4/sys/cxx/ipc_types</a>></span></div>
|
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include <l4/sys/cxx/ipc_varg></span></div>
|
|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include <l4/cxx/type_traits></span></div>
|
|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include <l4/cxx/minmax></span></div>
|
|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4.html">L4</a> {</div>
|
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4_1_1Ipc.html">Ipc</a> {</div>
|
|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
|
|
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keyword">class </span><a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">Ostream</a>;</div>
|
|
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keyword">class </span><a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">Istream</a>;</div>
|
|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
|
|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">namespace </span>Internal {</div>
|
|
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="keyword">class </span>Buf_cp_out</div>
|
|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>{</div>
|
|
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> Buf_cp_out(T <span class="keyword">const</span> *v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size) : _v(v), _s(size) {}</div>
|
|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span></div>
|
|
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _s; }</div>
|
|
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span></div>
|
|
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> T <span class="keyword">const</span> *buf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _v; }</div>
|
|
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
|
|
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">friend</span> <span class="keyword">class </span>Ostream;</div>
|
|
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> T <span class="keyword">const</span> *_v;</div>
|
|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> _s;</div>
|
|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>};</div>
|
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>}</div>
|
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span></div>
|
|
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00100" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="namespaceL4_1_1Ipc.html#a57f3a70c8396ed77fd006b84f44023e4"> 100</a></span>Internal::Buf_cp_out<T> <a class="code hl_function" href="namespaceL4_1_1Ipc.html#a57f3a70c8396ed77fd006b84f44023e4">buf_cp_out</a>(T <span class="keyword">const</span> *v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size)</div>
|
|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span>{ <span class="keywordflow">return</span> Internal::Buf_cp_out<T>(v, size); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
|
|
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
|
|
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="keyword">namespace </span>Internal {</div>
|
|
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="keyword">class </span>Buf_cp_in</div>
|
|
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>{</div>
|
|
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> Buf_cp_in(T *v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size) : _v(v), _s(&size) {}</div>
|
|
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
|
|
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *_s; }</div>
|
|
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> T *buf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _v; }</div>
|
|
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
|
|
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">friend</span> <span class="keyword">class </span>Istream;</div>
|
|
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> T *_v;</div>
|
|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *_s;</div>
|
|
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span>};</div>
|
|
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span>}</div>
|
|
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span></div>
|
|
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00159" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"><a class="line" href="namespaceL4_1_1Ipc.html#a7a3b27526de8d5179e8906968d2b90ee"> 159</a></span>Internal::Buf_cp_in<T> <a class="code hl_function" href="namespaceL4_1_1Ipc.html#a7a3b27526de8d5179e8906968d2b90ee">buf_cp_in</a>(T *v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size)</div>
|
|
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span>{ <span class="keywordflow">return</span> Internal::Buf_cp_in<T>(v, size); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span></div>
|
|
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00178" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Str__cp__in.html"> 178</a></span><span class="keyword">class </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Str__cp__in.html#ae25b4d7dbc9ff2de1df816cc48c2dbb0">Str_cp_in</a></div>
|
|
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span>{</div>
|
|
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Str__cp__in.html#ae25b4d7dbc9ff2de1df816cc48c2dbb0"> 189</a></span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Str__cp__in.html#ae25b4d7dbc9ff2de1df816cc48c2dbb0">Str_cp_in</a>(T *v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size) : _v(v), _s(&size) {}</div>
|
|
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> </div>
|
|
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *_s; }</div>
|
|
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> T *buf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _v; }</div>
|
|
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
|
|
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">friend</span> <span class="keyword">class </span>Istream;</div>
|
|
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> T *_v;</div>
|
|
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *_s;</div>
|
|
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span></div>
|
|
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00213" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="namespaceL4_1_1Ipc.html#a3631594384493d8e2878ca2899dcc886"> 213</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Str__cp__in.html">Str_cp_in<T></a> <a class="code hl_function" href="namespaceL4_1_1Ipc.html#a3631594384493d8e2878ca2899dcc886">str_cp_in</a>(T *v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size)</div>
|
|
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>{ <span class="keywordflow">return</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Str__cp__in.html">Str_cp_in<T></a>(v, size); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span></div>
|
|
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00229" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Msg__ptr.html"> 229</a></span><span class="keyword">class </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Msg__ptr.html#a133225fb58ef1fe47b3bf2541ea64aac">Msg_ptr</a></div>
|
|
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span>{</div>
|
|
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> T **_p;</div>
|
|
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Msg__ptr.html#a133225fb58ef1fe47b3bf2541ea64aac"> 240</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Msg__ptr.html#a133225fb58ef1fe47b3bf2541ea64aac">Msg_ptr</a>(T *&p) : _p(&p) {}</div>
|
|
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordtype">void</span> set(T *p)<span class="keyword"> const </span>{ *_p = p; }</div>
|
|
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span></div>
|
|
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00252" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="namespaceL4_1_1Ipc.html#ab252ad2428ad3644d59df26fe24ec112"> 252</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Msg__ptr.html">Msg_ptr<T></a> <a class="code hl_function" href="namespaceL4_1_1Ipc.html#ab252ad2428ad3644d59df26fe24ec112">msg_ptr</a>(T *&p)</div>
|
|
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span>{ <span class="keywordflow">return</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Msg__ptr.html">Msg_ptr<T></a>(p); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> </div>
|
|
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
|
|
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="keyword">namespace </span>Internal {</div>
|
|
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="keyword">class </span>Buf_in</div>
|
|
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span>{</div>
|
|
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> Buf_in(T *&v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size) : _v(&v), _s(&size) {}</div>
|
|
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
|
|
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordtype">void</span> set_size(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> s)<span class="keyword"> const </span>{ *_s = s; }</div>
|
|
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> T *&buf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *_v; }</div>
|
|
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
|
|
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keyword">friend</span> <span class="keyword">class </span>Istream;</div>
|
|
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> T **_v;</div>
|
|
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *_s;</div>
|
|
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span>};</div>
|
|
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span>}</div>
|
|
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span></div>
|
|
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00310" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"><a class="line" href="namespaceL4_1_1Ipc.html#a4a9721744594b5fb52cccb6fc51eb6d2"> 310</a></span>Internal::Buf_in<T> <a class="code hl_function" href="namespaceL4_1_1Ipc.html#a4a9721744594b5fb52cccb6fc51eb6d2">buf_in</a>(T *&v, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &size)</div>
|
|
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span>{ <span class="keywordflow">return</span> Internal::Buf_in<T>(v, size); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> </div>
|
|
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span><span class="keyword">namespace </span>Utcb_stream_check</div>
|
|
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span>{</div>
|
|
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> check_utcb_data_offset(<span class="keywordtype">unsigned</span> sz)</div>
|
|
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> { <span class="keywordflow">return</span> sz > <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a>) * L4_UTCB_GENERIC_DATA_SIZE; }</div>
|
|
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span>}</div>
|
|
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> </div>
|
|
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span></div>
|
|
<div class="foldopen" id="foldopen00334" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html"> 334</a></span><span class="keyword">class </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">Istream</a></div>
|
|
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span>{</div>
|
|
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="keyword">public</span>:</div>
|
|
<div class="foldopen" id="foldopen00348" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13"> 348</a></span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">Istream</a>(<a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">utcb</a>)</div>
|
|
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> : _tag(), _utcb(<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">utcb</a>),</div>
|
|
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> _current_msg(reinterpret_cast<char*>(l4_utcb_mr_u(<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">utcb</a>)->mr)),</div>
|
|
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> _pos(0), _current_buf(0)</div>
|
|
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> {}</div>
|
|
</div>
|
|
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span></div>
|
|
<div class="foldopen" id="foldopen00358" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a5f859ec603799261a88885307ae062ed"> 358</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a5f859ec603799261a88885307ae062ed">reset</a>()</div>
|
|
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> {</div>
|
|
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> _pos = 0;</div>
|
|
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> _current_buf = 0;</div>
|
|
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> _current_msg = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(l4_utcb_mr_u(_utcb)->mr);</div>
|
|
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span></div>
|
|
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00369" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0"> 369</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> count = 1)</div>
|
|
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> {</div>
|
|
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keyword">auto</span> <span class="keyword">const</span> max_bytes = L4_UTCB_GENERIC_DATA_SIZE * <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a>);</div>
|
|
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordtype">unsigned</span> apos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keywordflow">return</span> (count <= max_bytes / <span class="keyword">sizeof</span>(T))</div>
|
|
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> && (apos + (<span class="keyword">sizeof</span>(T) * count)</div>
|
|
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> <= _tag.words() * <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a>));</div>
|
|
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span></div>
|
|
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span></div>
|
|
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00394" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c"> 394</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(T *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> elems)</div>
|
|
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> {</div>
|
|
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">if</span> (<a class="code hl_define" href="group__l4sys__defines.html#ga3df4200910f2664b97397c23693beeb0">L4_UNLIKELY</a>(!<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more<T></a>(elems)))</div>
|
|
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
|
|
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size = elems * <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> _pos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> </div>
|
|
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> __builtin_memcpy(buf, _current_msg + _pos, size);</div>
|
|
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> _pos += size;</div>
|
|
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">return</span> elems;</div>
|
|
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> </div>
|
|
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span></div>
|
|
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00414" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a49d6d9711a3d6dbf6352856789f683df"> 414</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a49d6d9711a3d6dbf6352856789f683df">skip</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> elems)</div>
|
|
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> {</div>
|
|
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keywordflow">if</span> (<a class="code hl_define" href="group__l4sys__defines.html#ga3df4200910f2664b97397c23693beeb0">L4_UNLIKELY</a>(!<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more<T></a>(elems)))</div>
|
|
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> </div>
|
|
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size = elems * <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> _pos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> _pos += size;</div>
|
|
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span></div>
|
|
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00439" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#abd0510c547c9fb0817ce01708bf354c6"> 439</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#abd0510c547c9fb0817ce01708bf354c6">get</a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Msg__ptr.html">Msg_ptr<T></a> <span class="keyword">const</span> &buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> elems = 1)</div>
|
|
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> {</div>
|
|
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keywordflow">if</span> (<a class="code hl_define" href="group__l4sys__defines.html#ga3df4200910f2664b97397c23693beeb0">L4_UNLIKELY</a>(!<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more<T></a>(elems)))</div>
|
|
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> </div>
|
|
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size = elems * <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> _pos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> </div>
|
|
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> buf.set(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(_current_msg + _pos));</div>
|
|
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> _pos += size;</div>
|
|
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keywordflow">return</span> elems;</div>
|
|
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> </div>
|
|
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span></div>
|
|
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00464" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a659b8e2314545c567e142931dd0c0a26"> 464</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a659b8e2314545c567e142931dd0c0a26">get</a>(T &v)</div>
|
|
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> {</div>
|
|
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="keywordflow">if</span> (<a class="code hl_define" href="group__l4sys__defines.html#ga3df4200910f2664b97397c23693beeb0">L4_UNLIKELY</a>(!<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more<T></a>()))</div>
|
|
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> {</div>
|
|
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> v = T();</div>
|
|
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> }</div>
|
|
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> </div>
|
|
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> _pos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> v = *(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(_current_msg + _pos));</div>
|
|
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> _pos += <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> </div>
|
|
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> </div>
|
|
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Varg.html">Ipc::Varg</a> *va)</div>
|
|
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> {</div>
|
|
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <a class="code hl_typedef" href="classL4_1_1Ipc_1_1Varg.html#a3765d59f14c34c60eb2fec5a7d2ac563">Ipc::Varg::Tag</a> t;</div>
|
|
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more<Ipc::Varg::Tag></a>())</div>
|
|
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> {</div>
|
|
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> va-><a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#aa66635aa2d14298a753579a569f00bb6">tag</a>(0);</div>
|
|
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> }</div>
|
|
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(t);</div>
|
|
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> va-><a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#aa66635aa2d14298a753579a569f00bb6">tag</a>(t);</div>
|
|
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <span class="keywordtype">char</span> <span class="keyword">const</span> *d;</div>
|
|
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(<a class="code hl_function" href="namespaceL4_1_1Ipc.html#ab252ad2428ad3644d59df26fe24ec112">msg_ptr</a>(d), va-><a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#a9e4b77ed49fe0c30507f3977dc4a967c">length</a>());</div>
|
|
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> va-><a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#abe92e24b28fd3bb79110243e304f5532">data</a>(d);</div>
|
|
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> </div>
|
|
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> <span class="keywordflow">return</span> 1;</div>
|
|
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> }</div>
|
|
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span></div>
|
|
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411"> 505</a></span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tag; }</div>
|
|
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> </div>
|
|
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span></div>
|
|
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a557ef1a2f99716bec506c16700d398fc"> 517</a></span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> &<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a557ef1a2f99716bec506c16700d398fc">tag</a>() { <span class="keywordflow">return</span> _tag; }</div>
|
|
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span></div>
|
|
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span></div>
|
|
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> put(<a class="code hl_class" href="classL4_1_1Ipc_1_1Rcv__fpage.html">Rcv_fpage</a> <span class="keyword">const</span> &);</div>
|
|
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span></div>
|
|
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> put(<a class="code hl_class" href="classL4_1_1Ipc_1_1Small__buf.html">Small_buf</a> <span class="keyword">const</span> &);</div>
|
|
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> </div>
|
|
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span></div>
|
|
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span></div>
|
|
<div class="foldopen" id="foldopen00548" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#ad33f3a887fbd32d7d04c4fb3fd9c0fcb"> 548</a></span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ad33f3a887fbd32d7d04c4fb3fd9c0fcb">wait</a>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src)</div>
|
|
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> { <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ad33f3a887fbd32d7d04c4fb3fd9c0fcb">wait</a>(src, <a class="code hl_define" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span></div>
|
|
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ad33f3a887fbd32d7d04c4fb3fd9c0fcb">wait</a>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout);</div>
|
|
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span></div>
|
|
<div class="foldopen" id="foldopen00572" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a48ea27ded0dd456360bf98c6cb262218"> 572</a></span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a48ea27ded0dd456360bf98c6cb262218">receive</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> src)</div>
|
|
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> { <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a48ea27ded0dd456360bf98c6cb262218">receive</a>(src, <a class="code hl_define" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a48ea27ded0dd456360bf98c6cb262218">receive</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> src, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout);</div>
|
|
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span></div>
|
|
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span></div>
|
|
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938"> 581</a></span> <span class="keyword">inline</span> <a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">utcb</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _utcb; }</div>
|
|
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> </div>
|
|
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span><span class="keyword">protected</span>:</div>
|
|
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> _tag;</div>
|
|
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *_utcb;</div>
|
|
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <span class="keywordtype">char</span> *_current_msg;</div>
|
|
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keywordtype">unsigned</span> _pos;</div>
|
|
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> _current_buf;</div>
|
|
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> </div>
|
|
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span><span class="keyword">class </span>Istream_copy : <span class="keyword">public</span> Istream</div>
|
|
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span>{</div>
|
|
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> <a class="code hl_union" href="unionl4__msg__regs__t.html">l4_msg_regs_t</a> _mrs;</div>
|
|
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> </div>
|
|
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> Istream_copy(<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">Istream</a> <span class="keyword">const</span> &o) : <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">Istream</a>(o), _mrs(*l4_utcb_mr_u(o.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">utcb</a>()))</div>
|
|
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> {</div>
|
|
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <span class="comment">// do some reverse mr to utcb trickery</span></div>
|
|
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> _utcb = <span class="keyword">reinterpret_cast<</span><a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *<span class="keyword">></span></div>
|
|
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> (<span class="keyword">reinterpret_cast<</span><a class="code hl_typedef" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a><span class="keyword">></span>(&_mrs)</div>
|
|
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> - <span class="keyword">reinterpret_cast<</span><a class="code hl_typedef" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a><span class="keyword">></span>(l4_utcb_mr_u(<span class="keyword">nullptr</span>)));</div>
|
|
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> _current_msg = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(l4_utcb_mr_u(_utcb)->mr);</div>
|
|
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> }</div>
|
|
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
|
|
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span>};</div>
|
|
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span></div>
|
|
<div class="foldopen" id="foldopen00623" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html"> 623</a></span><span class="keyword">class </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0399a63243e4445e84e3ec35bfd280bc">Ostream</a></div>
|
|
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span>{</div>
|
|
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span><span class="keyword">public</span>:</div>
|
|
<div class="foldopen" id="foldopen00629" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a0399a63243e4445e84e3ec35bfd280bc"> 629</a></span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0399a63243e4445e84e3ec35bfd280bc">Ostream</a>(<a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a39cf9644a4b6cf555b11d0f96444c9af">utcb</a>)</div>
|
|
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> : _tag(), _utcb(<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a39cf9644a4b6cf555b11d0f96444c9af">utcb</a>),</div>
|
|
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> _current_msg(reinterpret_cast<char *>(l4_utcb_mr_u(_utcb)->mr)),</div>
|
|
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> _pos(0), _current_item(0)</div>
|
|
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> {}</div>
|
|
</div>
|
|
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span></div>
|
|
<div class="foldopen" id="foldopen00638" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#afaf2794226d026e500ead0757069ea7c"> 638</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#afaf2794226d026e500ead0757069ea7c">reset</a>()</div>
|
|
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> {</div>
|
|
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> _pos = 0;</div>
|
|
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> _current_item = 0;</div>
|
|
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> _current_msg = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(l4_utcb_mr_u(_utcb)->mr);</div>
|
|
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span></div>
|
|
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span></div>
|
|
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00660" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7"> 660</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(T *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> size)</div>
|
|
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> {</div>
|
|
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> size *= <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> _pos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="keywordflow">if</span> (Utcb_stream_check::check_utcb_data_offset(_pos + size))</div>
|
|
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> </div>
|
|
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> __builtin_memcpy(_current_msg + _pos, buf, size);</div>
|
|
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> _pos += size;</div>
|
|
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span></div>
|
|
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="foldopen" id="foldopen00678" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a0b04d2acd07996cd1dfd5ac3025106f0"> 678</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0b04d2acd07996cd1dfd5ac3025106f0">put</a>(T <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> {</div>
|
|
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> _pos = cxx::Type_traits<T>::align(_pos);</div>
|
|
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> <span class="keywordflow">if</span> (Utcb_stream_check::check_utcb_data_offset(_pos + <span class="keyword">sizeof</span>(T)))</div>
|
|
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> </div>
|
|
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> *(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(_current_msg + _pos)) = v;</div>
|
|
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> _pos += <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> </div>
|
|
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Varg.html">Varg</a> <span class="keyword">const</span> &va)</div>
|
|
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> {</div>
|
|
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(va.<a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#aa66635aa2d14298a753579a569f00bb6">tag</a>());</div>
|
|
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(va.<a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#abe92e24b28fd3bb79110243e304f5532">data</a>(), va.<a class="code hl_function" href="classL4_1_1Ipc_1_1Varg.html#a9e4b77ed49fe0c30507f3977dc4a967c">length</a>());</div>
|
|
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> </div>
|
|
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> }</div>
|
|
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> </div>
|
|
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> <span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(Varg_t<T> <span class="keyword">const</span> &va)</div>
|
|
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> { <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(<span class="keyword">static_cast<</span>Varg <span class="keyword">const </span>&<span class="keyword">></span>(va)); }</div>
|
|
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span></div>
|
|
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7"> 706</a></span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tag; }</div>
|
|
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span></div>
|
|
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a750eb94fcbadec60fdaea11ea519111a"> 713</a></span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> &<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a750eb94fcbadec60fdaea11ea519111a">tag</a>() { <span class="keywordflow">return</span> _tag; }</div>
|
|
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span></div>
|
|
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span></div>
|
|
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> put_snd_item(<a class="code hl_class" href="classL4_1_1Ipc_1_1Snd__fpage.html">Snd_fpage</a> <span class="keyword">const</span> &);</div>
|
|
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> </div>
|
|
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span></div>
|
|
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span></div>
|
|
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0ac15ba65285ed66a3b2ae7f9dc612d1">send</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dst, <span class="keywordtype">long</span> proto = 0, <span class="keywordtype">unsigned</span> flags = 0);</div>
|
|
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span></div>
|
|
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span></div>
|
|
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a39cf9644a4b6cf555b11d0f96444c9af"> 745</a></span> <span class="keyword">inline</span> <a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a39cf9644a4b6cf555b11d0f96444c9af">utcb</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _utcb; }</div>
|
|
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span><span class="preprocessor">#if 0</span><span class="preprocessor"></span></div>
|
|
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> tell()<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> <span class="keywordtype">unsigned</span> w = <a class="code hl_function" href="group__l4__memory__api.html#ga2be30f4e5dde3c85d115d2a9c77f6215">l4_bytes_to_mwords</a>(_pos) - _current_item * 2;</div>
|
|
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> _tag = <a class="code hl_function" href="group__l4__msgtag__api.html#ga661d71acad9d096fa990f7c94943bc78">l4_msgtag</a>(0, w, _current_item, 0);</div>
|
|
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> }</div>
|
|
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span><span class="preprocessor">#endif</span></div>
|
|
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> prepare_ipc(<span class="keywordtype">long</span> proto = 0, <span class="keywordtype">unsigned</span> flags = 0)</div>
|
|
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> {</div>
|
|
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> <span class="keywordtype">unsigned</span> w = <a class="code hl_function" href="group__l4__memory__api.html#ga2be30f4e5dde3c85d115d2a9c77f6215">l4_bytes_to_mwords</a>(_pos) - _current_item * 2;</div>
|
|
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4__msgtag__api.html#ga661d71acad9d096fa990f7c94943bc78">l4_msgtag</a>(proto, w, _current_item, flags);</div>
|
|
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> }</div>
|
|
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> </div>
|
|
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <span class="comment">// XXX: this is a hack for <l4/sys/cxx/ipc_server> adaption</span></div>
|
|
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> <span class="keywordtype">void</span> set_ipc_params(<a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>)</div>
|
|
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> {</div>
|
|
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> _pos = (<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>.<a class="code hl_function" href="structl4__msgtag__t.html#a98577ea730d9abcd938b89d5c7adb18c">words</a>() + <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>.<a class="code hl_function" href="structl4__msgtag__t.html#ad014e4a9f4509b068ddda678f6f8d568">items</a>() * 2) * <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a>);</div>
|
|
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> _current_item = <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>.<a class="code hl_function" href="structl4__msgtag__t.html#ad014e4a9f4509b068ddda678f6f8d568">items</a>();</div>
|
|
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> }</div>
|
|
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span><span class="keyword">protected</span>:</div>
|
|
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <a class="code hl_typedef" href="group__l4__msgtag__api.html#gad2c28384485a82490cab17ac929f05e9">l4_msgtag_t</a> _tag;</div>
|
|
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *_utcb;</div>
|
|
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> <span class="keywordtype">char</span> *_current_msg;</div>
|
|
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> <span class="keywordtype">unsigned</span> _pos;</div>
|
|
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> _current_item;</div>
|
|
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> </div>
|
|
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span></div>
|
|
<div class="foldopen" id="foldopen00789" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Iostream.html"> 789</a></span><span class="keyword">class </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a7b81e97c60209a67575b0c765b38e789">Iostream</a> : <span class="keyword">public</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">Istream</a>, <span class="keyword">public</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0399a63243e4445e84e3ec35bfd280bc">Ostream</a></div>
|
|
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span>{</div>
|
|
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span></div>
|
|
<div class="foldopen" id="foldopen00801" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Iostream.html#a7b81e97c60209a67575b0c765b38e789"> 801</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a7b81e97c60209a67575b0c765b38e789">Iostream</a>(<a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb)</div>
|
|
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> : <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">Istream</a>(utcb), <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0399a63243e4445e84e3ec35bfd280bc">Ostream</a>(utcb)</div>
|
|
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> {}</div>
|
|
</div>
|
|
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> </div>
|
|
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> <span class="comment">// disambiguate those functions</span></div>
|
|
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">Istream::tag</a>(); }</div>
|
|
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> &<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>() { <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">Istream::tag</a>(); }</div>
|
|
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> <a class="code hl_typedef" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">utcb</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">Istream::utcb</a>(); }</div>
|
|
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span></div>
|
|
<div class="foldopen" id="foldopen00815" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Iostream.html#a1015a0966b9faef7e344530b1eb6e13a"> 815</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a1015a0966b9faef7e344530b1eb6e13a">reset</a>()</div>
|
|
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> {</div>
|
|
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a5f859ec603799261a88885307ae062ed">Istream::reset</a>();</div>
|
|
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#afaf2794226d026e500ead0757069ea7c">Ostream::reset</a>();</div>
|
|
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> </div>
|
|
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span></div>
|
|
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> </div>
|
|
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> <span class="keyword">using </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">Istream::get</a>;</div>
|
|
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> <span class="keyword">using </span>Istream::put;</div>
|
|
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> <span class="keyword">using </span><a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">Ostream::put</a>;</div>
|
|
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span></div>
|
|
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span></div>
|
|
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span></div>
|
|
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca">call</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dst, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto = 0);</div>
|
|
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca">call</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dst, <span class="keywordtype">long</span> proto = 0);</div>
|
|
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span></div>
|
|
<div class="foldopen" id="foldopen00874" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Iostream.html#a44dbb5e5db14aa3d85cf07becfdb759f"> 874</a></span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a44dbb5e5db14aa3d85cf07becfdb759f">reply_and_wait</a>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src_dst, <span class="keywordtype">long</span> proto = 0)</div>
|
|
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> { <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a44dbb5e5db14aa3d85cf07becfdb759f">reply_and_wait</a>(src_dst, <a class="code hl_define" href="group__l4__timeout__api.html#ga22a6a662679f6baaa0ae931d8bb443ea">L4_IPC_SEND_TIMEOUT_0</a>, proto); }</div>
|
|
</div>
|
|
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> </div>
|
|
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> send_and_wait(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dest, <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src,</div>
|
|
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> <span class="keywordtype">long</span> proto = 0)</div>
|
|
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> { <span class="keywordflow">return</span> send_and_wait(dest, src, <a class="code hl_define" href="group__l4__timeout__api.html#ga22a6a662679f6baaa0ae931d8bb443ea">L4_IPC_SEND_TIMEOUT_0</a>, proto); }</div>
|
|
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span></div>
|
|
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a44dbb5e5db14aa3d85cf07becfdb759f">reply_and_wait</a>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src_dst,</div>
|
|
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto = 0);</div>
|
|
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> send_and_wait(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dest, <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src,</div>
|
|
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto = 0);</div>
|
|
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> reply(<a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto = 0);</div>
|
|
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> reply(<span class="keywordtype">long</span> proto = 0)</div>
|
|
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> { <span class="keywordflow">return</span> reply(<a class="code hl_define" href="group__l4__timeout__api.html#ga22a6a662679f6baaa0ae931d8bb443ea">L4_IPC_SEND_TIMEOUT_0</a>, proto); }</div>
|
|
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span></div>
|
|
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> </div>
|
|
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> </div>
|
|
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span><span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
|
|
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span>Ostream::put_snd_item(<a class="code hl_class" href="classL4_1_1Ipc_1_1Snd__fpage.html">Snd_fpage</a> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span>{</div>
|
|
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> <span class="keyword">typedef</span> Snd_fpage T;</div>
|
|
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> _pos = cxx::Type_traits<Snd_fpage>::align(_pos);</div>
|
|
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <span class="keywordflow">if</span> (Utcb_stream_check::check_utcb_data_offset(_pos + <span class="keyword">sizeof</span>(T)))</div>
|
|
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> </div>
|
|
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> *(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(_current_msg + _pos)) = v;</div>
|
|
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> _pos += <span class="keyword">sizeof</span>(T);</div>
|
|
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> ++_current_item;</div>
|
|
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span>}</div>
|
|
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> </div>
|
|
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> </div>
|
|
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span><span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
|
|
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span>Istream::put(<a class="code hl_class" href="classL4_1_1Ipc_1_1Rcv__fpage.html">Rcv_fpage</a> <span class="keyword">const</span> &item)</div>
|
|
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span>{</div>
|
|
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> <span class="keywordtype">unsigned</span> words = item.forward_mappings() ? 3 : 2;</div>
|
|
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> <span class="keywordflow">if</span> (_current_buf >= <a class="code hl_enumvalue" href="group__l4__utcb__api__x86.html#ggac03d87ea12ff53e0a7037eb3f9408af8ad311749a2178cbc16f654fd48fb4930d">L4_UTCB_GENERIC_BUFFERS_SIZE</a> - words - 1)</div>
|
|
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> </div>
|
|
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> l4_utcb_br_u(_utcb)-><a class="code hl_variable" href="structl4__buf__regs__t.html#a852ae37fbb64d4a2f71cbd4c0ba905d1">bdr</a> &= ~L4_BDR_OFFSET_MASK;</div>
|
|
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> </div>
|
|
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *buf</div>
|
|
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> = <span class="keyword">reinterpret_cast<</span><a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *<span class="keyword">></span>(&l4_utcb_br_u(_utcb)-><a class="code hl_variable" href="structl4__buf__regs__t.html#a716f3f2090e6d861415e3386bfa3037d">br</a>[_current_buf]);</div>
|
|
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> *buf++ = item.base_x();</div>
|
|
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> *buf++ = item.data();</div>
|
|
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> <span class="keywordflow">if</span> (item.forward_mappings())</div>
|
|
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> *buf++ = item.rcv_task();</div>
|
|
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> _current_buf += words;</div>
|
|
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span>}</div>
|
|
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> </div>
|
|
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> </div>
|
|
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span><span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
|
|
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span>Istream::put(<a class="code hl_class" href="classL4_1_1Ipc_1_1Small__buf.html">Small_buf</a> <span class="keyword">const</span> &item)</div>
|
|
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span>{</div>
|
|
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"> 947</span> <span class="keywordflow">if</span> (_current_buf >= <a class="code hl_enumvalue" href="group__l4__utcb__api__x86.html#ggac03d87ea12ff53e0a7037eb3f9408af8ad311749a2178cbc16f654fd48fb4930d">L4_UTCB_GENERIC_BUFFERS_SIZE</a> - 2)</div>
|
|
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> </div>
|
|
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span> l4_utcb_br_u(_utcb)-><a class="code hl_variable" href="structl4__buf__regs__t.html#a852ae37fbb64d4a2f71cbd4c0ba905d1">bdr</a> &= ~L4_BDR_OFFSET_MASK;</div>
|
|
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span> </div>
|
|
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> <span class="keyword">reinterpret_cast<</span>Small_buf&<span class="keyword">></span>(l4_utcb_br_u(_utcb)-><a class="code hl_variable" href="structl4__buf__regs__t.html#a716f3f2090e6d861415e3386bfa3037d">br</a>[_current_buf]) = item;</div>
|
|
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> _current_buf += 1;</div>
|
|
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span>}</div>
|
|
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> </div>
|
|
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> </div>
|
|
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span><span class="keyword">inline</span> <a class="code hl_typedef" href="group__l4__msgtag__api.html#gad2c28384485a82490cab17ac929f05e9">l4_msgtag_t</a></div>
|
|
<div class="foldopen" id="foldopen00959" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Ostream.html#a0ac15ba65285ed66a3b2ae7f9dc612d1"> 959</a></span><a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0ac15ba65285ed66a3b2ae7f9dc612d1">Ostream::send</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dst, <span class="keywordtype">long</span> proto, <span class="keywordtype">unsigned</span> flags)</div>
|
|
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span>{</div>
|
|
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a> = prepare_ipc(proto, <a class="code hl_enumvalue" href="group__l4__msgtag__api.html#gga16589e963a73c13aefd2760ce418e053a0c76a62b96b46f93fe3041b9c4ffac8c">L4_MSGTAG_FLAGS</a> & flags);</div>
|
|
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4__ipc__api.html#ga7de45eb59ce852466362ea85da00299e">l4_ipc_send</a>(dst, _utcb, <a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>, <a class="code hl_define" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>);</div>
|
|
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span> </div>
|
|
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="foldopen" id="foldopen00966" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca"> 966</a></span><a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca">Iostream::call</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dst, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> label)</div>
|
|
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span>{</div>
|
|
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> tag = prepare_ipc(label);</div>
|
|
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> tag = <a class="code hl_function" href="group__l4__ipc__api.html#gab96d1669dcd54657237ee27b7f6862c6">l4_ipc_call</a>(dst, Ostream::_utcb, tag, timeout);</div>
|
|
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">Istream::tag</a>() = tag;</div>
|
|
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> Istream::_pos = 0;</div>
|
|
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> <span class="keywordflow">return</span> tag;</div>
|
|
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> </div>
|
|
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span><a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca">Iostream::call</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dst, <span class="keywordtype">long</span> label)</div>
|
|
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca">call</a>(dst, <a class="code hl_define" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>, label); }</div>
|
|
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> </div>
|
|
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> </div>
|
|
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="foldopen" id="foldopen00981" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Iostream.html#a38428e61e86208016e9653937da01f6d"> 981</a></span><a class="code hl_function" href="classL4_1_1Ipc_1_1Iostream.html#a44dbb5e5db14aa3d85cf07becfdb759f">Iostream::reply_and_wait</a>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src_dst, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto)</div>
|
|
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span>{</div>
|
|
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> tag = prepare_ipc(proto);</div>
|
|
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> tag = <a class="code hl_function" href="group__l4__ipc__api.html#ga1bd93bc08f402cc149bf62cba3ba9905">l4_ipc_reply_and_wait</a>(Ostream::_utcb, tag, src_dst, timeout);</div>
|
|
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">Istream::tag</a>() = tag;</div>
|
|
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> Istream::_pos = 0;</div>
|
|
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> <span class="keywordflow">return</span> tag;</div>
|
|
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> </div>
|
|
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> </div>
|
|
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span>Iostream::send_and_wait(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> dest, <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src,</div>
|
|
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto)</div>
|
|
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span>{</div>
|
|
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a> = prepare_ipc(proto);</div>
|
|
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a> = <a class="code hl_function" href="group__l4__ipc__api.html#ga72ee1f322b3f633fb885905ce213e2b5">l4_ipc_send_and_wait</a>(dest, Ostream::_utcb, <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>, src, timeout);</div>
|
|
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">Istream::tag</a>() = <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>;</div>
|
|
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> Istream::_pos = 0;</div>
|
|
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>;</div>
|
|
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span>}</div>
|
|
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> </div>
|
|
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span>Iostream::reply(<a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout, <span class="keywordtype">long</span> proto)</div>
|
|
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span>{</div>
|
|
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a> = prepare_ipc(proto);</div>
|
|
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a> = <a class="code hl_function" href="group__l4__ipc__api.html#ga7de45eb59ce852466362ea85da00299e">l4_ipc_send</a>(<a class="code hl_enumvalue" href="group__l4__cap__api.html#ggafee0421c2fe0e5cfc59f17f16ea10879aff9320ed307e76cebfca6c2871136102">L4_INVALID_CAP</a> | <a class="code hl_enumvalue" href="group__l4__ipc__api.html#ggaecfdf101783a02772b67b94793f3a915a21d07c1e159b0e4b2bd824ac052e4508">L4_SYSF_REPLY</a>, Ostream::_utcb, <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>, timeout);</div>
|
|
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">Istream::tag</a>() = <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>;</div>
|
|
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> Istream::_pos = 0;</div>
|
|
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>;</div>
|
|
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span>}</div>
|
|
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> </div>
|
|
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="foldopen" id="foldopen01013" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"><a class="line" href="classL4_1_1Ipc_1_1Istream.html#aeefe739d106daa026a1d94ade34f1d97"> 1013</a></span><a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#ad33f3a887fbd32d7d04c4fb3fd9c0fcb">Istream::wait</a>(<a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *src, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout)</div>
|
|
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span>{</div>
|
|
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> res;</div>
|
|
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> res = <a class="code hl_function" href="group__l4__ipc__api.html#gade81ef7ed9cb9e08bec716e640eabe04">l4_ipc_wait</a>(_utcb, src, timeout);</div>
|
|
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>() = res;</div>
|
|
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> _pos = 0;</div>
|
|
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="keywordflow">return</span> res;</div>
|
|
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> </div>
|
|
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> </div>
|
|
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span><span class="keyword">inline</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a></div>
|
|
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span><a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a48ea27ded0dd456360bf98c6cb262218">Istream::receive</a>(<a class="code hl_typedef" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> src, <a class="code hl_union" href="unionl4__timeout__t.html">l4_timeout_t</a> timeout)</div>
|
|
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span>{</div>
|
|
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> res;</div>
|
|
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> res = <a class="code hl_function" href="group__l4__ipc__api.html#ga3a8617092651c67f9ef1670b53fce66c">l4_ipc_receive</a>(src, _utcb, timeout);</div>
|
|
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> <a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>() = res;</div>
|
|
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> _pos = 0;</div>
|
|
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> <span class="keywordflow">return</span> res;</div>
|
|
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span>}</div>
|
|
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> </div>
|
|
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span>} <span class="comment">// namespace Ipc</span></div>
|
|
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span>} <span class="comment">// namespace L4</span></div>
|
|
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span></div>
|
|
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"><a class="line" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0"> 1044</a></span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">bool</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">long</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">short</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <span class="keywordtype">int</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">char</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <span class="keywordtype">signed</span> <span class="keywordtype">char</span> &v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <a class="code hl_class" href="classL4_1_1Ipc_1_1Rcv__fpage.html">L4::Ipc::Rcv_fpage</a> <span class="keyword">const</span> &v) { s.put(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <a class="code hl_class" href="classL4_1_1Ipc_1_1Small__buf.html">L4::Ipc::Small_buf</a> <span class="keyword">const</span> &v) { s.put(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <a class="code hl_class" href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a> &v)</div>
|
|
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span>{</div>
|
|
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> b, d;</div>
|
|
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> s >> b >> d;</div>
|
|
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> v = <a class="code hl_class" href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a>(b, d);</div>
|
|
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span>}</div>
|
|
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <a class="code hl_class" href="classL4_1_1Ipc_1_1Varg.html">L4::Ipc::Varg</a> &v)</div>
|
|
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span>{ s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(&v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> </div>
|
|
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span></div>
|
|
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01078" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"><a class="line" href="ipc__stream.html#a6504e271fab6d63fc78f0eeb512316bd"> 1078</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s, <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> &v)</div>
|
|
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span>{</div>
|
|
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> v = s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">tag</a>();</div>
|
|
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span></div>
|
|
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01103" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"><a class="line" href="ipc__stream.html#a3bcad61fc6dfcc57bc6fe4afafabe831"> 1103</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s,</div>
|
|
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> L4::Ipc::Internal::Buf_in<T> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>{</div>
|
|
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> si;</div>
|
|
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> <span class="keywordflow">if</span> (s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(si) && s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">has_more</a><T>(si))</div>
|
|
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> v.set_size(s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Msg__ptr.html">L4::Ipc::Msg_ptr<T></a>(v.buf()), si));</div>
|
|
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> <span class="keywordflow">else</span></div>
|
|
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> v.set_size(0);</div>
|
|
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span></div>
|
|
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01130" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"><a class="line" href="ipc__stream.html#acae581e2444ca424076b52497666535b"> 1130</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s,</div>
|
|
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Msg__ptr.html">L4::Ipc::Msg_ptr<T></a> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span>{</div>
|
|
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v);</div>
|
|
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span></div>
|
|
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01151" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"><a class="line" href="ipc__stream.html#a53ae87ffdd0c79ecf6b74210419475db"> 1151</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s,</div>
|
|
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> L4::Ipc::Internal::Buf_cp_in<T> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span>{</div>
|
|
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz;</div>
|
|
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(sz);</div>
|
|
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> v.size() = s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v.buf(), cxx::min(v.size(), sz));</div>
|
|
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span></div>
|
|
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01172" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"><a class="line" href="ipc__stream.html#a912d9d789e4d6c608d97d9def1302033"> 1172</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &<a class="code hl_function" href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator >> </a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a> &s,</div>
|
|
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Str__cp__in.html">L4::Ipc::Str_cp_in<T></a> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span>{</div>
|
|
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sz;</div>
|
|
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(sz);</div>
|
|
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> rsz = s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">get</a>(v.buf(), cxx::min(v.size(), sz));</div>
|
|
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> <span class="keywordflow">if</span> (rsz < v.size() && v.buf()[rsz - 1])</div>
|
|
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> ++rsz; <span class="comment">// add the zero termination behind the received data</span></div>
|
|
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> </div>
|
|
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> <span class="keywordflow">if</span> (rsz != 0)</div>
|
|
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> v.buf()[rsz - 1] = 0;</div>
|
|
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span> </div>
|
|
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> v.size() = rsz;</div>
|
|
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> </div>
|
|
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span></div>
|
|
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"><a class="line" href="ipc__stream.html#a368b2760283dc1aa10eecba178bd192f"> 1197</a></span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">bool</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">long</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">short</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <span class="keywordtype">int</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">char</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">signed</span> <span class="keywordtype">char</span> v) { s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <a class="code hl_class" href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a> <span class="keyword">const</span> &v) { s.put_snd_item(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<T></a> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span>{ s << <a class="code hl_class" href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a>(v.<a class="code hl_function" href="classL4_1_1Cap__base.html#a60a4c249059576429246b5b74bd3174e">fpage</a>()); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> </div>
|
|
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <a class="code hl_class" href="classL4_1_1Ipc_1_1Varg.html">L4::Ipc::Varg</a> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span>{ s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span><span class="keyword">inline</span> <a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, L4::Ipc::Varg_t<T> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span>{ s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v); <span class="keywordflow">return</span> s; }</div>
|
|
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span></div>
|
|
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01232" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"><a class="line" href="ipc__stream.html#a2818054bb7ca081d014f7f81706fbfce"> 1232</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <a class="code hl_struct" href="structl4__msgtag__t.html">l4_msgtag_t</a> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span>{</div>
|
|
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">tag</a>() = v;</div>
|
|
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span></div>
|
|
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01248" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"><a class="line" href="ipc__stream.html#a078a06f5ecddff6e7a94386d3e9c3ece"> 1248</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s,</div>
|
|
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> L4::Ipc::Internal::Buf_cp_out<T> <span class="keyword">const</span> &v)</div>
|
|
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span>{</div>
|
|
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v.size());</div>
|
|
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v.buf(), v.size());</div>
|
|
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span></div>
|
|
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span><span class="keyword">inline</span></div>
|
|
<div class="foldopen" id="foldopen01269" data-start="{" data-end="}">
|
|
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"><a class="line" href="ipc__stream.html#a2f4df865a76488b2f249dfe2959bffc4"> 1269</a></span><a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &operator << (<a class="code hl_class" href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a> &s, <span class="keywordtype">char</span> <span class="keyword">const</span> *v)</div>
|
|
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span>{</div>
|
|
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> l = __builtin_strlen(v) + 1;</div>
|
|
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(l);</div>
|
|
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span> s.<a class="code hl_function" href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">put</a>(v, l);</div>
|
|
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span> <span class="keywordflow">return</span> s;</div>
|
|
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span>}</div>
|
|
</div>
|
|
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> </div>
|
|
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4.html">L4</a> { <span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4_1_1Ipc.html">Ipc</a> {</div>
|
|
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span><span class="keyword">template</span>< <span class="keyword">typename</span> T ></div>
|
|
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span><span class="keyword">inline</span></div>
|
|
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"><a class="line" href="namespaceL4_1_1Ipc.html#acc2cd40991fdf32a8259649933609fd1"> 1289</a></span>T <a class="code hl_function" href="namespaceL4_1_1Ipc.html#acc2cd40991fdf32a8259649933609fd1">read</a>(<a class="code hl_class" href="classL4_1_1Ipc_1_1Istream.html">Istream</a> &s) { T t; s >> t; <span class="keywordflow">return</span> t; }</div>
|
|
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span> </div>
|
|
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span>} <span class="comment">// namespace Ipc</span></div>
|
|
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span>} <span class="comment">// namespace L4</span></div>
|
|
<div class="ttc" id="acapability_html"><div class="ttname"><a href="capability.html">capability</a></div><div class="ttdoc">L4::Cap related definitions.</div></div>
|
|
<div class="ttc" id="aclassL4_1_1Cap__base_html_a60a4c249059576429246b5b74bd3174e"><div class="ttname"><a href="classL4_1_1Cap__base.html#a60a4c249059576429246b5b74bd3174e">L4::Cap_base::fpage</a></div><div class="ttdeci">l4_fpage_t fpage(unsigned rights=L4_CAP_FPAGE_RWS) const noexcept</div><div class="ttdoc">Return flexpage for the capability.</div><div class="ttdef"><b>Definition</b> <a href="capability_8h_source.html#l00074">capability.h:74</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Cap_html"><div class="ttname"><a href="classL4_1_1Cap.html">L4::Cap</a></div><div class="ttdoc">C++ interface for capabilities.</div><div class="ttdef"><b>Definition</b> <a href="capability_8h_source.html#l00223">capability.h:224</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Iostream_html_a1015a0966b9faef7e344530b1eb6e13a"><div class="ttname"><a href="classL4_1_1Ipc_1_1Iostream.html#a1015a0966b9faef7e344530b1eb6e13a">L4::Ipc::Iostream::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Reset the stream to its initial state.</div><div class="ttdef"><b>Definition</b> <a href="#l00815">ipc_stream:815</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Iostream_html_a18ac55dddefc29f84d47935dbc86b7ca"><div class="ttname"><a href="classL4_1_1Ipc_1_1Iostream.html#a18ac55dddefc29f84d47935dbc86b7ca">L4::Ipc::Iostream::call</a></div><div class="ttdeci">l4_msgtag_t call(l4_cap_idx_t dst, l4_timeout_t timeout, long proto=0)</div><div class="ttdoc">Do an IPC call using the message in the output stream and receive the reply in the input stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00966">ipc_stream:966</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Iostream_html_a44dbb5e5db14aa3d85cf07becfdb759f"><div class="ttname"><a href="classL4_1_1Ipc_1_1Iostream.html#a44dbb5e5db14aa3d85cf07becfdb759f">L4::Ipc::Iostream::reply_and_wait</a></div><div class="ttdeci">l4_msgtag_t reply_and_wait(l4_umword_t *src_dst, long proto=0)</div><div class="ttdoc">Do an IPC reply and wait.</div><div class="ttdef"><b>Definition</b> <a href="#l00874">ipc_stream:874</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Iostream_html_a7b81e97c60209a67575b0c765b38e789"><div class="ttname"><a href="classL4_1_1Ipc_1_1Iostream.html#a7b81e97c60209a67575b0c765b38e789">L4::Ipc::Iostream::Iostream</a></div><div class="ttdeci">Iostream(l4_utcb_t *utcb)</div><div class="ttdoc">Create an IPC IO stream with a single message buffer.</div><div class="ttdef"><b>Definition</b> <a href="#l00801">ipc_stream:801</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html">L4::Ipc::Istream</a></div><div class="ttdoc">Input stream for IPC unmarshalling.</div><div class="ttdef"><b>Definition</b> <a href="#l00334">ipc_stream:335</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a1d6a18cbfe81206099ea737495634938"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a1d6a18cbfe81206099ea737495634938">L4::Ipc::Istream::utcb</a></div><div class="ttdeci">l4_utcb_t * utcb() const</div><div class="ttdoc">Return utcb pointer.</div><div class="ttdef"><b>Definition</b> <a href="#l00581">ipc_stream:581</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a48ea27ded0dd456360bf98c6cb262218"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a48ea27ded0dd456360bf98c6cb262218">L4::Ipc::Istream::receive</a></div><div class="ttdeci">l4_msgtag_t receive(l4_cap_idx_t src)</div><div class="ttdoc">Wait for a message from the specified sender.</div><div class="ttdef"><b>Definition</b> <a href="#l00572">ipc_stream:572</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a49d6d9711a3d6dbf6352856789f683df"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a49d6d9711a3d6dbf6352856789f683df">L4::Ipc::Istream::skip</a></div><div class="ttdeci">void skip(unsigned long elems)</div><div class="ttdoc">Skip size elements of type T in the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00414">ipc_stream:414</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a557ef1a2f99716bec506c16700d398fc"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a557ef1a2f99716bec506c16700d398fc">L4::Ipc::Istream::tag</a></div><div class="ttdeci">l4_msgtag_t & tag()</div><div class="ttdoc">Get the message tag of a received IPC.</div><div class="ttdef"><b>Definition</b> <a href="#l00517">ipc_stream:517</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a5f859ec603799261a88885307ae062ed"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a5f859ec603799261a88885307ae062ed">L4::Ipc::Istream::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Reset the stream to empty, and ready for receive()/wait().</div><div class="ttdef"><b>Definition</b> <a href="#l00358">ipc_stream:358</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a659b8e2314545c567e142931dd0c0a26"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a659b8e2314545c567e142931dd0c0a26">L4::Ipc::Istream::get</a></div><div class="ttdeci">bool get(T &v)</div><div class="ttdoc">Extract a single element of type T from the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00464">ipc_stream:464</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a685d93c237cbf66ff368e17639109411"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a685d93c237cbf66ff368e17639109411">L4::Ipc::Istream::tag</a></div><div class="ttdeci">l4_msgtag_t tag() const</div><div class="ttdoc">Get the message tag of a received IPC.</div><div class="ttdef"><b>Definition</b> <a href="#l00505">ipc_stream:505</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_a8087f571b556efae9b7738741f6dc3e0"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#a8087f571b556efae9b7738741f6dc3e0">L4::Ipc::Istream::has_more</a></div><div class="ttdeci">bool has_more(unsigned long count=1)</div><div class="ttdoc">Check whether a value of type T can be obtained from the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00369">ipc_stream:369</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_ab5980b69b0060a1b5603c28aa0d88c13"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#ab5980b69b0060a1b5603c28aa0d88c13">L4::Ipc::Istream::Istream</a></div><div class="ttdeci">Istream(l4_utcb_t *utcb)</div><div class="ttdoc">Create an input stream for the given message buffer.</div><div class="ttdef"><b>Definition</b> <a href="#l00348">ipc_stream:348</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_abd0510c547c9fb0817ce01708bf354c6"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#abd0510c547c9fb0817ce01708bf354c6">L4::Ipc::Istream::get</a></div><div class="ttdeci">unsigned long get(Msg_ptr< T > const &buf, unsigned long elems=1)</div><div class="ttdoc">Read one size elements of type T from the stream and return a pointer.</div><div class="ttdef"><b>Definition</b> <a href="#l00439">ipc_stream:439</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_ad33f3a887fbd32d7d04c4fb3fd9c0fcb"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#ad33f3a887fbd32d7d04c4fb3fd9c0fcb">L4::Ipc::Istream::wait</a></div><div class="ttdeci">l4_msgtag_t wait(l4_umword_t *src)</div><div class="ttdoc">Wait for an incoming message from any sender.</div><div class="ttdef"><b>Definition</b> <a href="#l00548">ipc_stream:548</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Istream_html_af4d28aa64235c822f624891154109a0c"><div class="ttname"><a href="classL4_1_1Ipc_1_1Istream.html#af4d28aa64235c822f624891154109a0c">L4::Ipc::Istream::get</a></div><div class="ttdeci">unsigned long get(T *buf, unsigned long elems)</div><div class="ttdoc">Copy out an array of type T with size elements.</div><div class="ttdef"><b>Definition</b> <a href="#l00394">ipc_stream:394</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Msg__ptr_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Msg__ptr.html">L4::Ipc::Msg_ptr</a></div><div class="ttdoc">Pointer to an element of type T in an Ipc::Istream.</div><div class="ttdef"><b>Definition</b> <a href="#l00229">ipc_stream:230</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Msg__ptr_html_a133225fb58ef1fe47b3bf2541ea64aac"><div class="ttname"><a href="classL4_1_1Ipc_1_1Msg__ptr.html#a133225fb58ef1fe47b3bf2541ea64aac">L4::Ipc::Msg_ptr::Msg_ptr</a></div><div class="ttdeci">Msg_ptr(T *&p)</div><div class="ttdoc">Create a Msg_ptr object that set pointer p to point into the message buffer.</div><div class="ttdef"><b>Definition</b> <a href="#l00240">ipc_stream:240</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html">L4::Ipc::Ostream</a></div><div class="ttdoc">Output stream for IPC marshalling.</div><div class="ttdef"><b>Definition</b> <a href="#l00623">ipc_stream:624</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a0399a63243e4445e84e3ec35bfd280bc"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a0399a63243e4445e84e3ec35bfd280bc">L4::Ipc::Ostream::Ostream</a></div><div class="ttdeci">Ostream(l4_utcb_t *utcb)</div><div class="ttdoc">Create an IPC output stream using the given message buffer utcb.</div><div class="ttdef"><b>Definition</b> <a href="#l00629">ipc_stream:629</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a0ac15ba65285ed66a3b2ae7f9dc612d1"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a0ac15ba65285ed66a3b2ae7f9dc612d1">L4::Ipc::Ostream::send</a></div><div class="ttdeci">l4_msgtag_t send(l4_cap_idx_t dst, long proto=0, unsigned flags=0)</div><div class="ttdoc">Send the message via IPC to the given receiver.</div><div class="ttdef"><b>Definition</b> <a href="#l00959">ipc_stream:959</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a0b04d2acd07996cd1dfd5ac3025106f0"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a0b04d2acd07996cd1dfd5ac3025106f0">L4::Ipc::Ostream::put</a></div><div class="ttdeci">bool put(T const &v)</div><div class="ttdoc">Insert an element of type T into the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00678">ipc_stream:678</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a0bb12677e48b2b08456b30a928aed8e7"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a0bb12677e48b2b08456b30a928aed8e7">L4::Ipc::Ostream::put</a></div><div class="ttdeci">bool put(T *buf, unsigned long size)</div><div class="ttdoc">Put an array with size elements of type T into the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00660">ipc_stream:660</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a143eae895a15ac555c7ae7279812bff7"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a143eae895a15ac555c7ae7279812bff7">L4::Ipc::Ostream::tag</a></div><div class="ttdeci">l4_msgtag_t tag() const</div><div class="ttdoc">Extract the L4 message tag from the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00706">ipc_stream:706</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a39cf9644a4b6cf555b11d0f96444c9af"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a39cf9644a4b6cf555b11d0f96444c9af">L4::Ipc::Ostream::utcb</a></div><div class="ttdeci">l4_utcb_t * utcb() const</div><div class="ttdoc">Return utcb pointer.</div><div class="ttdef"><b>Definition</b> <a href="#l00745">ipc_stream:745</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_a750eb94fcbadec60fdaea11ea519111a"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#a750eb94fcbadec60fdaea11ea519111a">L4::Ipc::Ostream::tag</a></div><div class="ttdeci">l4_msgtag_t & tag()</div><div class="ttdoc">Extract a reference to the L4 message tag from the stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00713">ipc_stream:713</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Ostream_html_afaf2794226d026e500ead0757069ea7c"><div class="ttname"><a href="classL4_1_1Ipc_1_1Ostream.html#afaf2794226d026e500ead0757069ea7c">L4::Ipc::Ostream::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Reset the stream to empty, same state as a newly created stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00638">ipc_stream:638</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Rcv__fpage_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Rcv__fpage.html">L4::Ipc::Rcv_fpage</a></div><div class="ttdoc">Non-small receive item.</div><div class="ttdef"><b>Definition</b> <a href="ipc__types_source.html#l00544">ipc_types:545</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Small__buf_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Small__buf.html">L4::Ipc::Small_buf</a></div><div class="ttdoc">A receive item for receiving a single object capability.</div><div class="ttdef"><b>Definition</b> <a href="ipc__types_source.html#l00257">ipc_types:258</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Snd__fpage_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Snd__fpage.html">L4::Ipc::Snd_fpage</a></div><div class="ttdoc">Send item or return item.</div><div class="ttdef"><b>Definition</b> <a href="ipc__types_source.html#l00323">ipc_types:324</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Str__cp__in_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Str__cp__in.html">L4::Ipc::Str_cp_in</a></div><div class="ttdoc">Abstraction for extracting a zero-terminated string from an Ipc::Istream.</div><div class="ttdef"><b>Definition</b> <a href="#l00178">ipc_stream:179</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Str__cp__in_html_ae25b4d7dbc9ff2de1df816cc48c2dbb0"><div class="ttname"><a href="classL4_1_1Ipc_1_1Str__cp__in.html#ae25b4d7dbc9ff2de1df816cc48c2dbb0">L4::Ipc::Str_cp_in::Str_cp_in</a></div><div class="ttdeci">Str_cp_in(T *v, unsigned long &size)</div><div class="ttdoc">Create a buffer for extracting an array from an Ipc::Istream.</div><div class="ttdef"><b>Definition</b> <a href="#l00189">ipc_stream:189</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Varg_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Varg.html">L4::Ipc::Varg</a></div><div class="ttdoc">Variably sized RPC argument.</div><div class="ttdef"><b>Definition</b> <a href="ipc__varg_source.html#l00096">ipc_varg:97</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Varg_html_a3765d59f14c34c60eb2fec5a7d2ac563"><div class="ttname"><a href="classL4_1_1Ipc_1_1Varg.html#a3765d59f14c34c60eb2fec5a7d2ac563">L4::Ipc::Varg::Tag</a></div><div class="ttdeci">l4_umword_t Tag</div><div class="ttdoc">The data type for the tag.</div><div class="ttdef"><b>Definition</b> <a href="ipc__varg_source.html#l00106">ipc_varg:106</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Varg_html_a9e4b77ed49fe0c30507f3977dc4a967c"><div class="ttname"><a href="classL4_1_1Ipc_1_1Varg.html#a9e4b77ed49fe0c30507f3977dc4a967c">L4::Ipc::Varg::length</a></div><div class="ttdeci">unsigned length() const</div><div class="ttdoc">Get the size of the RPC argument.</div><div class="ttdef"><b>Definition</b> <a href="ipc__varg_source.html#l00114">ipc_varg:114</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Varg_html_aa66635aa2d14298a753579a569f00bb6"><div class="ttname"><a href="classL4_1_1Ipc_1_1Varg.html#aa66635aa2d14298a753579a569f00bb6">L4::Ipc::Varg::tag</a></div><div class="ttdeci">Tag tag() const</div><div class="ttdef"><b>Definition</b> <a href="ipc__varg_source.html#l00116">ipc_varg:116</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Ipc_1_1Varg_html_abe92e24b28fd3bb79110243e304f5532"><div class="ttname"><a href="classL4_1_1Ipc_1_1Varg.html#abe92e24b28fd3bb79110243e304f5532">L4::Ipc::Varg::data</a></div><div class="ttdeci">void data(char const *d)</div><div class="ttdoc">Set Varg to indirect data value (usually in UTCB).</div><div class="ttdef"><b>Definition</b> <a href="ipc__varg_source.html#l00120">ipc_varg:120</a></div></div>
|
|
<div class="ttc" id="agroup__l4__basic__types_html_ga1c2c4b333f75b1d05b59855910f2b9cb"><div class="ttname"><a href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></div><div class="ttdeci">unsigned long l4_umword_t</div><div class="ttdoc">Unsigned machine word.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2l4int_8h_source.html#l00040">l4int.h:40</a></div></div>
|
|
<div class="ttc" id="agroup__l4__basic__types_html_ga4087b991c40c0d2fcde9ca331049a4d4"><div class="ttname"><a href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></div><div class="ttdeci">unsigned long l4_addr_t</div><div class="ttdoc">Address type.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2l4int_8h_source.html#l00034">l4int.h:34</a></div></div>
|
|
<div class="ttc" id="agroup__l4__cap__api_html_ga1445e923ce73029130d569d6e69a4dd8"><div class="ttname"><a href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a></div><div class="ttdeci">unsigned long l4_cap_idx_t</div><div class="ttdoc">Capability selector type.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2types_8h_source.html#l00336">types.h:336</a></div></div>
|
|
<div class="ttc" id="agroup__l4__cap__api_html_ggafee0421c2fe0e5cfc59f17f16ea10879aff9320ed307e76cebfca6c2871136102"><div class="ttname"><a href="group__l4__cap__api.html#ggafee0421c2fe0e5cfc59f17f16ea10879aff9320ed307e76cebfca6c2871136102">L4_INVALID_CAP</a></div><div class="ttdeci">@ L4_INVALID_CAP</div><div class="ttdoc">Invalid capability selector.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2consts_8h_source.html#l00153">consts.h:153</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_ga1bd93bc08f402cc149bf62cba3ba9905"><div class="ttname"><a href="group__l4__ipc__api.html#ga1bd93bc08f402cc149bf62cba3ba9905">l4_ipc_reply_and_wait</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_reply_and_wait(l4_utcb_t *utcb, l4_msgtag_t tag, l4_umword_t *label, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Reply and wait operation (uses the reply capability).</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00572">ipc.h:572</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_ga3a8617092651c67f9ef1670b53fce66c"><div class="ttname"><a href="group__l4__ipc__api.html#ga3a8617092651c67f9ef1670b53fce66c">l4_ipc_receive</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_receive(l4_cap_idx_t object, l4_utcb_t *utcb, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Wait for a message from a specific source.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00602">ipc.h:602</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_ga72ee1f322b3f633fb885905ce213e2b5"><div class="ttname"><a href="group__l4__ipc__api.html#ga72ee1f322b3f633fb885905ce213e2b5">l4_ipc_send_and_wait</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_send_and_wait(l4_cap_idx_t dest, l4_utcb_t *utcb, l4_msgtag_t tag, l4_umword_t *label, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Send a message and do an open wait.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00579">ipc.h:579</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_ga7de45eb59ce852466362ea85da00299e"><div class="ttname"><a href="group__l4__ipc__api.html#ga7de45eb59ce852466362ea85da00299e">l4_ipc_send</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_send(l4_cap_idx_t dest, l4_utcb_t *utcb, l4_msgtag_t tag, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Send a message to an object (do not wait for a reply).</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00586">ipc.h:586</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_gab96d1669dcd54657237ee27b7f6862c6"><div class="ttname"><a href="group__l4__ipc__api.html#gab96d1669dcd54657237ee27b7f6862c6">l4_ipc_call</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_call(l4_cap_idx_t object, l4_utcb_t *utcb, l4_msgtag_t tag, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Object call (usual invocation).</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00565">ipc.h:565</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_gade81ef7ed9cb9e08bec716e640eabe04"><div class="ttname"><a href="group__l4__ipc__api.html#gade81ef7ed9cb9e08bec716e640eabe04">l4_ipc_wait</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_wait(l4_utcb_t *utcb, l4_umword_t *label, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Wait for an incoming message from any possible sender.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00593">ipc.h:593</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_ggaecfdf101783a02772b67b94793f3a915a21d07c1e159b0e4b2bd824ac052e4508"><div class="ttname"><a href="group__l4__ipc__api.html#ggaecfdf101783a02772b67b94793f3a915a21d07c1e159b0e4b2bd824ac052e4508">L4_SYSF_REPLY</a></div><div class="ttdeci">@ L4_SYSF_REPLY</div><div class="ttdoc">Reply flag.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2consts_8h_source.html#l00100">consts.h:100</a></div></div>
|
|
<div class="ttc" id="agroup__l4__memory__api_html_ga2be30f4e5dde3c85d115d2a9c77f6215"><div class="ttname"><a href="group__l4__memory__api.html#ga2be30f4e5dde3c85d115d2a9c77f6215">l4_bytes_to_mwords</a></div><div class="ttdeci">unsigned l4_bytes_to_mwords(unsigned size) L4_NOTHROW</div><div class="ttdoc">Determine how many machine words (l4_umword_t) are required to store a buffer of 'size' bytes.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2consts_8h_source.html#l00496">consts.h:496</a></div></div>
|
|
<div class="ttc" id="agroup__l4__msgtag__api_html_ga661d71acad9d096fa990f7c94943bc78"><div class="ttname"><a href="group__l4__msgtag__api.html#ga661d71acad9d096fa990f7c94943bc78">l4_msgtag</a></div><div class="ttdeci">l4_msgtag_t l4_msgtag(long label, unsigned words, unsigned items, unsigned flags) L4_NOTHROW</div><div class="ttdoc">Create a message tag from the specified values.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2types_8h_source.html#l00405">types.h:405</a></div></div>
|
|
<div class="ttc" id="agroup__l4__msgtag__api_html_gad2c28384485a82490cab17ac929f05e9"><div class="ttname"><a href="group__l4__msgtag__api.html#gad2c28384485a82490cab17ac929f05e9">l4_msgtag_t</a></div><div class="ttdeci">struct l4_msgtag_t l4_msgtag_t</div><div class="ttdoc">Message tag data structure.</div></div>
|
|
<div class="ttc" id="agroup__l4__msgtag__api_html_gga16589e963a73c13aefd2760ce418e053a0c76a62b96b46f93fe3041b9c4ffac8c"><div class="ttname"><a href="group__l4__msgtag__api.html#gga16589e963a73c13aefd2760ce418e053a0c76a62b96b46f93fe3041b9c4ffac8c">L4_MSGTAG_FLAGS</a></div><div class="ttdeci">@ L4_MSGTAG_FLAGS</div><div class="ttdoc">Mask for all flags.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2types_8h_source.html#l00133">types.h:133</a></div></div>
|
|
<div class="ttc" id="agroup__l4__timeout__api_html_ga22a6a662679f6baaa0ae931d8bb443ea"><div class="ttname"><a href="group__l4__timeout__api.html#ga22a6a662679f6baaa0ae931d8bb443ea">L4_IPC_SEND_TIMEOUT_0</a></div><div class="ttdeci">#define L4_IPC_SEND_TIMEOUT_0</div><div class="ttdoc">0 send timeout</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00078">__timeout.h:78</a></div></div>
|
|
<div class="ttc" id="agroup__l4__timeout__api_html_gaf01c5e1475efc4f33bc7d1985f7320d3"><div class="ttname"><a href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a></div><div class="ttdeci">#define L4_IPC_NEVER</div><div class="ttdoc">never timeout</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00076">__timeout.h:76</a></div></div>
|
|
<div class="ttc" id="agroup__l4__utcb__api__x86_html_ggac03d87ea12ff53e0a7037eb3f9408af8ad311749a2178cbc16f654fd48fb4930d"><div class="ttname"><a href="group__l4__utcb__api__x86.html#ggac03d87ea12ff53e0a7037eb3f9408af8ad311749a2178cbc16f654fd48fb4930d">L4_UTCB_GENERIC_BUFFERS_SIZE</a></div><div class="ttdeci">@ L4_UTCB_GENERIC_BUFFERS_SIZE</div><div class="ttdoc">Total number of buffer registers (BRs) available.</div><div class="ttdef"><b>Definition</b> <a href="x86_2l4_2sys_2utcb_8h_source.html#l00039">utcb.h:39</a></div></div>
|
|
<div class="ttc" id="agroup__l4__utcb__api_html_ga89be8a86d11c1d532b636cc2df1330fb"><div class="ttname"><a href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a></div><div class="ttdeci">struct l4_utcb_t l4_utcb_t</div><div class="ttdoc">Opaque type for the UTCB.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2utcb_8h_source.html#l00056">utcb.h:56</a></div></div>
|
|
<div class="ttc" id="agroup__l4sys__defines_html_ga3df4200910f2664b97397c23693beeb0"><div class="ttname"><a href="group__l4sys__defines.html#ga3df4200910f2664b97397c23693beeb0">L4_UNLIKELY</a></div><div class="ttdeci">#define L4_UNLIKELY(x)</div><div class="ttdoc">Expression is unlikely to execute.</div><div class="ttdef"><b>Definition</b> <a href="compiler_8h_source.html#l00284">compiler.h:284</a></div></div>
|
|
<div class="ttc" id="aipc__stream_html_ace3d2ecfa7716243dbecdcfc52d733d0"><div class="ttname"><a href="ipc__stream.html#ace3d2ecfa7716243dbecdcfc52d733d0">operator>></a></div><div class="ttdeci">L4::Ipc::Istream & operator>>(L4::Ipc::Istream &s, bool &v)</div><div class="ttdoc">Extract one element of type T from the stream s.</div><div class="ttdef"><b>Definition</b> <a href="#l01044">ipc_stream:1044</a></div></div>
|
|
<div class="ttc" id="aipc__types_html"><div class="ttname"><a href="ipc__types.html">ipc_types</a></div></div>
|
|
<div class="ttc" id="al4_2sys_2ipc_8h_html"><div class="ttname"><a href="l4_2sys_2ipc_8h.html">ipc.h</a></div><div class="ttdoc">Common IPC interface.</div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html"><div class="ttname"><a href="namespaceL4_1_1Ipc.html">L4::Ipc</a></div><div class="ttdoc">IPC related functionality.</div><div class="ttdef"><b>Definition</b> <a href="ipc__array_source.html#l00013">ipc_array:13</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_a3631594384493d8e2878ca2899dcc886"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#a3631594384493d8e2878ca2899dcc886">L4::Ipc::str_cp_in</a></div><div class="ttdeci">Str_cp_in< T > str_cp_in(T *v, unsigned long &size)</div><div class="ttdoc">Create a Str_cp_in for the given values.</div><div class="ttdef"><b>Definition</b> <a href="#l00213">ipc_stream:213</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_a4a9721744594b5fb52cccb6fc51eb6d2"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#a4a9721744594b5fb52cccb6fc51eb6d2">L4::Ipc::buf_in</a></div><div class="ttdeci">Internal::Buf_in< T > buf_in(T *&v, unsigned long &size)</div><div class="ttdoc">Return a pointer to stream array data.</div><div class="ttdef"><b>Definition</b> <a href="#l00310">ipc_stream:310</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_a57f3a70c8396ed77fd006b84f44023e4"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#a57f3a70c8396ed77fd006b84f44023e4">L4::Ipc::buf_cp_out</a></div><div class="ttdeci">Internal::Buf_cp_out< T > buf_cp_out(T const *v, unsigned long size)</div><div class="ttdoc">Insert an array into an Ipc::Ostream.</div><div class="ttdef"><b>Definition</b> <a href="#l00100">ipc_stream:100</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_a7a3b27526de8d5179e8906968d2b90ee"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#a7a3b27526de8d5179e8906968d2b90ee">L4::Ipc::buf_cp_in</a></div><div class="ttdeci">Internal::Buf_cp_in< T > buf_cp_in(T *v, unsigned long &size)</div><div class="ttdoc">Extract an array from an Ipc::Istream.</div><div class="ttdef"><b>Definition</b> <a href="#l00159">ipc_stream:159</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_ab252ad2428ad3644d59df26fe24ec112"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#ab252ad2428ad3644d59df26fe24ec112">L4::Ipc::msg_ptr</a></div><div class="ttdeci">Msg_ptr< T > msg_ptr(T *&p)</div><div class="ttdoc">Create an Msg_ptr to adjust the given pointer.</div><div class="ttdef"><b>Definition</b> <a href="#l00252">ipc_stream:252</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_acc2cd40991fdf32a8259649933609fd1"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#acc2cd40991fdf32a8259649933609fd1">L4::Ipc::read</a></div><div class="ttdeci">T read(Istream &s)</div><div class="ttdoc">Read a value out of a stream.</div><div class="ttdef"><b>Definition</b> <a href="#l01289">ipc_stream:1289</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_html"><div class="ttname"><a href="namespaceL4.html">L4</a></div><div class="ttdoc">L4 low-level kernel interface.</div><div class="ttdef"><b>Definition</b> <a href="l4sys-l4f-groups_8dox_source.html#l00050">l4sys-l4f-groups.dox:50</a></div></div>
|
|
<div class="ttc" id="astructl4__buf__regs__t_html_a716f3f2090e6d861415e3386bfa3037d"><div class="ttname"><a href="structl4__buf__regs__t.html#a716f3f2090e6d861415e3386bfa3037d">l4_buf_regs_t::br</a></div><div class="ttdeci">l4_umword_t br[L4_UTCB_GENERIC_BUFFERS_SIZE]</div><div class="ttdoc">Buffer registers.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2utcb_8h_source.html#l00088">utcb.h:88</a></div></div>
|
|
<div class="ttc" id="astructl4__buf__regs__t_html_a852ae37fbb64d4a2f71cbd4c0ba905d1"><div class="ttname"><a href="structl4__buf__regs__t.html#a852ae37fbb64d4a2f71cbd4c0ba905d1">l4_buf_regs_t::bdr</a></div><div class="ttdeci">l4_umword_t bdr</div><div class="ttdoc">Buffer descriptor.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2utcb_8h_source.html#l00085">utcb.h:85</a></div></div>
|
|
<div class="ttc" id="astructl4__msgtag__t_html"><div class="ttname"><a href="structl4__msgtag__t.html">l4_msgtag_t</a></div><div class="ttdoc">Message tag data structure.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2types_8h_source.html#l00153">types.h:154</a></div></div>
|
|
<div class="ttc" id="astructl4__msgtag__t_html_a98577ea730d9abcd938b89d5c7adb18c"><div class="ttname"><a href="structl4__msgtag__t.html#a98577ea730d9abcd938b89d5c7adb18c">l4_msgtag_t::words</a></div><div class="ttdeci">unsigned words() const L4_NOTHROW</div><div class="ttdoc">Get the number of untyped words.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2types_8h_source.html#l00169">types.h:169</a></div></div>
|
|
<div class="ttc" id="astructl4__msgtag__t_html_ad014e4a9f4509b068ddda678f6f8d568"><div class="ttname"><a href="structl4__msgtag__t.html#ad014e4a9f4509b068ddda678f6f8d568">l4_msgtag_t::items</a></div><div class="ttdeci">unsigned items() const L4_NOTHROW</div><div class="ttdoc">Get the number of typed items.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2types_8h_source.html#l00171">types.h:171</a></div></div>
|
|
<div class="ttc" id="aunionl4__msg__regs__t_html"><div class="ttname"><a href="unionl4__msg__regs__t.html">l4_msg_regs_t</a></div><div class="ttdoc">Encapsulation of the message-register block in the UTCB.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2utcb_8h_source.html#l00067">utcb.h:68</a></div></div>
|
|
<div class="ttc" id="aunionl4__timeout__t_html"><div class="ttname"><a href="unionl4__timeout__t.html">l4_timeout_t</a></div><div class="ttdoc">Timeout pair.</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00052">__timeout.h:53</a></div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
</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"><b>l4</b></li><li class="navelem"><b>cxx</b></li><li class="navelem"><a href="ipc__stream.html">ipc_stream</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>
|