242 lines
30 KiB
HTML
242 lines
30 KiB
HTML
<!-- HTML header for doxygen 1.9.1-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.15.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>L4Re Operating System Framework: l4/re/util/event_buffer 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('event__buffer_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">event_buffer</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<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="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">/*</span></div>
|
|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,</span></div>
|
|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * Alexander Warg <warg@os.inf.tu-dresden.de></span></div>
|
|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * economic rights: Technische Universität Dresden (Germany)</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"> * License: see LICENSE.spdx (in this directory or the directories above)</span></div>
|
|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> */</span></div>
|
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
|
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#pragma once</span></div>
|
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
|
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include <l4/re/event></span></div>
|
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include <l4/re/event-sys.h></span></div>
|
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include <<a class="code" href="rm.html">l4/re/rm</a>></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="string_8h.html">string.h</a>></span></div>
|
|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
|
|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4Re.html">L4Re</a> { <span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4Re_1_1Util.html">Util</a> {</div>
|
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span></div>
|
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">template</span>< <span class="keyword">typename</span> PAYLOAD ></div>
|
|
<div class="foldopen" id="foldopen00025" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__t.html"> 25</a></span><span class="keyword">class </span>Event_buffer_t : <span class="keyword">public</span> <a class="code hl_class" href="classL4Re_1_1Event__buffer__t.html">L4Re::Event_buffer_t</a><PAYLOAD></div>
|
|
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span>{</div>
|
|
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keywordtype">void</span> *_buf;</div>
|
|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__t.html#acac6d0f570f44e7569998d5da16021ff"> 35</a></span> <span class="keywordtype">void</span> *<a class="code hl_function" href="classL4Re_1_1Util_1_1Event__buffer__t.html#acac6d0f570f44e7569998d5da16021ff">buf</a>() const noexcept { <span class="keywordflow">return</span> _buf; }</div>
|
|
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span></div>
|
|
<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__t.html#a7ccb828618951c13cd1ccd7ebe1959e2"> 45</a></span> <span class="keywordtype">long</span> <a class="code hl_function" href="classL4Re_1_1Util_1_1Event__buffer__t.html#a7ccb828618951c13cd1ccd7ebe1959e2">attach</a>(<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4Re::Dataspace></a> ds, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4Re::Rm></a> rm) <span class="keyword">noexcept</span></div>
|
|
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> {</div>
|
|
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_typedef" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> sz = ds->size();</div>
|
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> _buf = 0;</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="keywordtype">long</span> r = rm->attach(&_buf, sz,</div>
|
|
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <a class="code hl_enumvalue" href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a">L4Re::Rm::F::Search_addr</a> | <a class="code hl_enumvalue" href="structL4Re_1_1Rm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989a579e389b46e438a64f3f44d9cf19f26a">L4Re::Rm::F::RW</a>,</div>
|
|
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <a class="code hl_function" href="namespaceL4_1_1Ipc.html#aa6b9422f850eb175240c9d18c5cc708c">L4::Ipc::make_cap_rw</a>(ds));</div>
|
|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">if</span> (r < 0)</div>
|
|
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span> r;</div>
|
|
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
|
|
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> *<span class="keyword">static_cast<</span><a class="code hl_class" href="classL4Re_1_1Event__buffer__t.html">L4Re::Event_buffer_t<PAYLOAD></a> *<span class="keyword">></span>(<span class="keyword">this</span>)</div>
|
|
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> = <a class="code hl_class" href="classL4Re_1_1Event__buffer__t.html">L4Re::Event_buffer_t<PAYLOAD></a>(_buf, sz);</div>
|
|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span></div>
|
|
<div class="foldopen" id="foldopen00068" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__t.html#a64b1b0c692062cef44f1fdd07ed98278"> 68</a></span> <span class="keywordtype">long</span> <a class="code hl_function" href="classL4Re_1_1Util_1_1Event__buffer__t.html#a64b1b0c692062cef44f1fdd07ed98278">detach</a>(<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4Re::Rm></a> rm) <span class="keyword">noexcept</span></div>
|
|
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> {</div>
|
|
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4Re::Dataspace></a> ds;</div>
|
|
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (_buf)</div>
|
|
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordflow">return</span> rm->detach(_buf, &ds);</div>
|
|
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
|
|
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span></div>
|
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="keyword">template</span>< <span class="keyword">typename</span> PAYLOAD ></div>
|
|
<div class="foldopen" id="foldopen00083" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html"> 83</a></span><span class="keyword">class </span><a class="code hl_class" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html">Event_buffer_consumer_t</a> : <span class="keyword">public</span> <a class="code hl_class" href="classL4Re_1_1Util_1_1Event__buffer__t.html">Event_buffer_t</a><PAYLOAD></div>
|
|
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span>{</div>
|
|
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span></div>
|
|
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">template</span>< <span class="keyword">typename</span> CB, <span class="keyword">typename</span> D ></div>
|
|
<div class="foldopen" id="foldopen00094" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#af28d452e8c1b3720b4bc26117d4f7e1c"> 94</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#af28d452e8c1b3720b4bc26117d4f7e1c">foreach_available_event</a>(CB <span class="keyword">const</span> &cb, D data = D())</div>
|
|
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> {</div>
|
|
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">typename</span> Event_buffer_t<PAYLOAD>::Event *e;</div>
|
|
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">while</span> ((e = <a class="code hl_function" href="classL4Re_1_1Event__buffer__t.html#a938f56b5a08af7298146786d4dcad7f5">Event_buffer_t<PAYLOAD>::next</a>()))</div>
|
|
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> {</div>
|
|
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> cb(e, data);</div>
|
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> e->free();</div>
|
|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
|
|
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span></div>
|
|
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">template</span>< <span class="keyword">typename</span> CB, <span class="keyword">typename</span> D ></div>
|
|
<div class="foldopen" id="foldopen00115" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#a4ed22b41ce4c7e6b93efae878b1415ef"> 115</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#a4ed22b41ce4c7e6b93efae878b1415ef">process</a>(<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Irq></a> irq,</div>
|
|
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Thread></a> thread,</div>
|
|
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> CB <span class="keyword">const</span> &cb, D data = D())</div>
|
|
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> {</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="keywordflow">if</span> (<a class="code hl_function" href="group__l4__ipc__err__api.html#ga05c11e3e10b6c2aa941396ac2018899f">l4_error</a>(irq->bind_thread(thread, 0)))</div>
|
|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
|
|
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">while</span> (1)</div>
|
|
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> {</div>
|
|
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">long</span> r;</div>
|
|
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> r = <a class="code hl_function" href="group__l4__ipc__err__api.html#gad40f404217497793e95a10d77a47db39">l4_ipc_error</a>(<a class="code hl_function" href="group__l4__irq__api.html#ga997f18b89d6235214d2f9c381ed6c6a5">l4_irq_receive</a>(irq.<a class="code hl_function" href="classL4_1_1Cap__base.html#a90ff089ca2442b128c2b2b0e1c22c6d7">cap</a>(), <a class="code hl_define" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>),</div>
|
|
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_function" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>());</div>
|
|
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">if</span> (r)</div>
|
|
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">continue</span>;</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> <a class="code hl_function" href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#af28d452e8c1b3720b4bc26117d4f7e1c">foreach_available_event</a>(cb, data);</div>
|
|
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
|
|
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
|
|
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="keyword">typedef</span> <a class="code hl_class" href="classL4Re_1_1Event__buffer__t.html">Event_buffer_t<Default_event_payload></a> Event_buffer;</div>
|
|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="keyword">typedef</span> Event_buffer_consumer_t<Default_event_payload> Event_buffer_consumer;</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="ttc" id="aclassL4Re_1_1Event__buffer__t_html"><div class="ttname"><a href="classL4Re_1_1Event__buffer__t.html">L4Re::Event_buffer_t</a></div><div class="ttdoc">Event buffer class.</div><div class="ttdef"><b>Definition</b> <a href="event_source.html#l00246">event:247</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Event__buffer__t_html_a938f56b5a08af7298146786d4dcad7f5"><div class="ttname"><a href="classL4Re_1_1Event__buffer__t.html#a938f56b5a08af7298146786d4dcad7f5">L4Re::Event_buffer_t< PAYLOAD >::next</a></div><div class="ttdeci">Event * next() noexcept</div><div class="ttdef"><b>Definition</b> <a href="event_source.html#l00303">event:303</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__consumer__t_html"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html">L4Re::Util::Event_buffer_consumer_t</a></div><div class="ttdoc">An event buffer consumer.</div><div class="ttdef"><b>Definition</b> <a href="#l00083">event_buffer:84</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__consumer__t_html_a4ed22b41ce4c7e6b93efae878b1415ef"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#a4ed22b41ce4c7e6b93efae878b1415ef">L4Re::Util::Event_buffer_consumer_t::process</a></div><div class="ttdeci">void process(L4::Cap< L4::Irq > irq, L4::Cap< L4::Thread > thread, CB const &cb, D data=D())</div><div class="ttdoc">Continuously wait for events and process them.</div><div class="ttdef"><b>Definition</b> <a href="#l00115">event_buffer:115</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__consumer__t_html_af28d452e8c1b3720b4bc26117d4f7e1c"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__consumer__t.html#af28d452e8c1b3720b4bc26117d4f7e1c">L4Re::Util::Event_buffer_consumer_t::foreach_available_event</a></div><div class="ttdeci">void foreach_available_event(CB const &cb, D data=D())</div><div class="ttdoc">Call function on every available event.</div><div class="ttdef"><b>Definition</b> <a href="#l00094">event_buffer:94</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__t_html"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__t.html">L4Re::Util::Event_buffer_t</a></div><div class="ttdoc">Event_buffer utility class.</div><div class="ttdef"><b>Definition</b> <a href="#l00025">event_buffer:26</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__t_html_a64b1b0c692062cef44f1fdd07ed98278"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__t.html#a64b1b0c692062cef44f1fdd07ed98278">L4Re::Util::Event_buffer_t::detach</a></div><div class="ttdeci">long detach(L4::Cap< L4Re::Rm > rm) noexcept</div><div class="ttdoc">Detach event buffer from address space.</div><div class="ttdef"><b>Definition</b> <a href="#l00068">event_buffer:68</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__t_html_a7ccb828618951c13cd1ccd7ebe1959e2"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__t.html#a7ccb828618951c13cd1ccd7ebe1959e2">L4Re::Util::Event_buffer_t::attach</a></div><div class="ttdeci">long attach(L4::Cap< L4Re::Dataspace > ds, L4::Cap< L4Re::Rm > rm) noexcept</div><div class="ttdoc">Attach event buffer from address space.</div><div class="ttdef"><b>Definition</b> <a href="#l00045">event_buffer:45</a></div></div>
|
|
<div class="ttc" id="aclassL4Re_1_1Util_1_1Event__buffer__t_html_acac6d0f570f44e7569998d5da16021ff"><div class="ttname"><a href="classL4Re_1_1Util_1_1Event__buffer__t.html#acac6d0f570f44e7569998d5da16021ff">L4Re::Util::Event_buffer_t::buf</a></div><div class="ttdeci">void * buf() const noexcept</div><div class="ttdoc">Return the buffer.</div><div class="ttdef"><b>Definition</b> <a href="#l00035">event_buffer:35</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Cap__base_html_a90ff089ca2442b128c2b2b0e1c22c6d7"><div class="ttname"><a href="classL4_1_1Cap__base.html#a90ff089ca2442b128c2b2b0e1c22c6d7">L4::Cap_base::cap</a></div><div class="ttdeci">l4_cap_idx_t cap() const noexcept</div><div class="ttdoc">Return capability selector.</div><div class="ttdef"><b>Definition</b> <a href="capability_8h_source.html#l00049">capability.h:49</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="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__ipc__err__api_html_ga05c11e3e10b6c2aa941396ac2018899f"><div class="ttname"><a href="group__l4__ipc__err__api.html#ga05c11e3e10b6c2aa941396ac2018899f">l4_error</a></div><div class="ttdeci">long l4_error(l4_msgtag_t tag) L4_NOTHROW</div><div class="ttdoc">Get IPC error code if any or message tag label otherwise for an IPC call.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00646">ipc.h:646</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__err__api_html_gad40f404217497793e95a10d77a47db39"><div class="ttname"><a href="group__l4__ipc__err__api.html#gad40f404217497793e95a10d77a47db39">l4_ipc_error</a></div><div class="ttdeci">l4_umword_t l4_ipc_error(l4_msgtag_t tag, l4_utcb_t *utcb) L4_NOTHROW</div><div class="ttdoc">Get the IPC error code for an IPC operation.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00629">ipc.h:629</a></div></div>
|
|
<div class="ttc" id="agroup__l4__irq__api_html_ga997f18b89d6235214d2f9c381ed6c6a5"><div class="ttname"><a href="group__l4__irq__api.html#ga997f18b89d6235214d2f9c381ed6c6a5">l4_irq_receive</a></div><div class="ttdeci">l4_msgtag_t l4_irq_receive(l4_cap_idx_t irq, l4_timeout_t to) L4_NOTHROW</div><div class="ttdoc">Unmask and wait for specified IRQ.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2irq_8h_source.html#l00313">irq.h:313</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_html_gadc099b4a59e1d99638c72c11a8c8b644"><div class="ttname"><a href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a></div><div class="ttdeci">l4_utcb_t * l4_utcb(void) L4_NOTHROW L4_PURE</div><div class="ttdoc">Get the UTCB address.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2utcb_8h_source.html#l00346">utcb.h:346</a></div></div>
|
|
<div class="ttc" id="anamespaceL4Re_1_1Util_html"><div class="ttname"><a href="namespaceL4Re_1_1Util.html">L4Re::Util</a></div><div class="ttdoc">Documentation of the L4 Runtime Environment utility functionality in C++.</div><div class="ttdef"><b>Definition</b> <a href="pkg_2l4re-core_2l4re_2doc_2l4re_8dox_source.html#l00021">l4re.dox:21</a></div></div>
|
|
<div class="ttc" id="anamespaceL4Re_html"><div class="ttname"><a href="namespaceL4Re.html">L4Re</a></div><div class="ttdoc">L4Re C++ Interfaces.</div><div class="ttdef"><b>Definition</b> <a href="cmd__control_source.html#l00014">cmd_control:14</a></div></div>
|
|
<div class="ttc" id="anamespaceL4_1_1Ipc_html_aa6b9422f850eb175240c9d18c5cc708c"><div class="ttname"><a href="namespaceL4_1_1Ipc.html#aa6b9422f850eb175240c9d18c5cc708c">L4::Ipc::make_cap_rw</a></div><div class="ttdeci">Cap< T > make_cap_rw(L4::Cap< T > cap) noexcept</div><div class="ttdoc">Make an L4::Ipc::Cap<T> for the given capability with L4_CAP_FPAGE_RW rights.</div><div class="ttdef"><b>Definition</b> <a href="ipc__types_source.html#l00795">ipc_types:795</a></div></div>
|
|
<div class="ttc" id="arm_html"><div class="ttname"><a href="rm.html">rm</a></div><div class="ttdoc">Region mapper interface.</div></div>
|
|
<div class="ttc" id="astring_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">String.</div></div>
|
|
<div class="ttc" id="astructL4Re_1_1Rm_1_1F_html_a9707a14d822d3f60aa6a97cb16b2a989a579e389b46e438a64f3f44d9cf19f26a"><div class="ttname"><a href="structL4Re_1_1Rm_1_1F.html#a9707a14d822d3f60aa6a97cb16b2a989a579e389b46e438a64f3f44d9cf19f26a">L4Re::Rm::F::RW</a></div><div class="ttdeci">@ RW</div><div class="ttdoc">Readable and writable region.</div><div class="ttdef"><b>Definition</b> <a href="rm_source.html#l00139">rm:139</a></div></div>
|
|
<div class="ttc" id="astructL4Re_1_1Rm_1_1F_html_adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a"><div class="ttname"><a href="structL4Re_1_1Rm_1_1F.html#adec4d26077e34d9586891ac0489e0041a067b0bc28378717b6962241c621caa0a">L4Re::Rm::F::Search_addr</a></div><div class="ttdeci">@ Search_addr</div><div class="ttdoc">Search for a suitable address range.</div><div class="ttdef"><b>Definition</b> <a href="rm_source.html#l00114">rm:114</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>re</b></li><li class="navelem"><b>util</b></li><li class="navelem"><b>event_buffer</b></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>
|