l4re-base-25.08.0

This commit is contained in:
2025-09-12 15:55:45 +02:00
commit d959eaab98
37938 changed files with 9382688 additions and 0 deletions

View File

@@ -0,0 +1,358 @@
<!-- 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/vbus/vbus 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('vbus_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">vbus</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) 2011 Adam Lackorzynski &lt;adam@os.inf.tu-dresden.de&gt;</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * economic rights: Technische Universität Dresden (Germany)</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * License: see LICENSE.spdx (in this directory or the directories above)</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> */</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#pragma once</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">#include &lt;<a class="code" href="vbus_8h.html">l4/vbus/vbus.h</a>&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;l4/vbus/vbus_pm.h&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;<a class="code" href="icu.html">l4/sys/icu</a>&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;<a class="code" href="dataspace.html">l4/re/dataspace</a>&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;<a class="code" href="dma__space.html">l4/re/dma_space</a>&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;l4/re/event&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;l4/re/inhibitor&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span></div>
<div class="foldopen" id="foldopen00040" data-start="{" data-end="}">
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="namespaceL4vbus.html"> 40</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceL4vbus.html">L4vbus</a> {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="keyword">class </span><a class="code hl_class" href="classL4vbus_1_1Vbus.html">Vbus</a>;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> DEC&gt;</div>
<div class="foldopen" id="foldopen00050" data-start="{" data-end="};">
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Pm.html"> 50</a></span><span class="keyword">class </span><a class="code hl_class" href="classL4vbus_1_1Pm.html">Pm</a></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>{</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> DEC <span class="keyword">const</span> *self()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>DEC <span class="keyword">const </span>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>); }</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> DEC *self() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>DEC *<span class="keyword">&gt;</span>(<span class="keyword">this</span>); }</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00063" data-start="{" data-end="}">
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Pm.html#a3f6361841097aeed4f5eb44fafaaaa42"> 63</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Pm.html#a3f6361841097aeed4f5eb44fafaaaa42">pm_suspend</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__pm__module.html#gaaf9347586738d9980caeff65dd6ca7c7">l4vbus_pm_suspend</a>(self()-&gt;bus_cap().cap(), self()-&gt;dev_handle()); }</div>
</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span></div>
<div class="foldopen" id="foldopen00074" data-start="{" data-end="}">
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Pm.html#ada27de826a15347a7c49f061c9eb7d30"> 74</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Pm.html#ada27de826a15347a7c49f061c9eb7d30">pm_resume</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__pm__module.html#ga1b1bb31b74eb1ad50a8bb1f5cca258a9">l4vbus_pm_resume</a>(self()-&gt;bus_cap().cap(), self()-&gt;dev_handle()); }</div>
</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="l00078" name="l00078"></a><span class="lineno"> 78</span></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="classL4vbus_1_1Device.html"> 83</a></span><span class="keyword">class </span><a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a> : <span class="keyword">public</span> <a class="code hl_class" href="classL4vbus_1_1Pm.html">Pm</a>&lt;Device&gt;</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="l00089" name="l00089"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec"> 89</a></span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a>() : <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>(<a class="code hl_enumvalue" href="vbus_8h.html#a11792b1cd672d66434a0c76cfd53ca13a37b6c6ee1e53d4ddd172f43a8dedc9b0">L4VBUS_NULL</a>) {}</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span></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="classL4vbus_1_1Device.html#a3c2cb35016636efb93ca552c1c4b6b96"> 100</a></span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a3c2cb35016636efb93ca552c1c4b6b96">Device</a>(<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;Vbus&gt;</a> bus, <a class="code hl_typedef" href="vbus__types_8h.html#a3d2ee122c9c592d768eee886d36b31cf">l4vbus_device_handle_t</a> dev)</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> : <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>(bus), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>(dev) {}</div>
</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a286c71ba7f0ab66fd9d90a9e91dfa560"> 107</a></span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;Vbus&gt;</a> <a class="code hl_function" href="classL4vbus_1_1Device.html#a286c71ba7f0ab66fd9d90a9e91dfa560">bus_cap</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>; }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a63dcb7dba875e85f09f7ab755836bf2e"> 116</a></span> <a class="code hl_typedef" href="vbus__types_8h.html#a3d2ee122c9c592d768eee886d36b31cf">l4vbus_device_handle_t</a> <a class="code hl_function" href="classL4vbus_1_1Device.html#a63dcb7dba875e85f09f7ab755836bf2e">dev_handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>; }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span></div>
<div class="foldopen" id="foldopen00148" data-start="{" data-end="}">
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a555d6ec6b3e9b8d64fb8705f2cdf7cf7"> 148</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a555d6ec6b3e9b8d64fb8705f2cdf7cf7">device_by_hid</a>(<a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a> *child, <span class="keywordtype">char</span> <span class="keyword">const</span> *hid,</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">int</span> depth = L4VBUS_MAX_DEPTH,</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <a class="code hl_struct" href="structl4vbus__device__t.html">l4vbus_device_t</a> *devinfo = 0)<span class="keyword"> const</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> child-&gt;<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a> = <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#gaf965dbeed4864b72603c5ec69080f1ba">l4vbus_get_device_by_hid</a>(<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>.cap(), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, &amp;child-&gt;<a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, hid,</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> depth, devinfo);</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span></div>
<div class="foldopen" id="foldopen00171" data-start="{" data-end="}">
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#ab8a12f148e84113f52856f29f086af50"> 171</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#ab8a12f148e84113f52856f29f086af50">next_device</a>(<a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a> *child, <span class="keywordtype">int</span> depth = L4VBUS_MAX_DEPTH,</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_struct" href="structl4vbus__device__t.html">l4vbus_device_t</a> *devinfo = 0)<span class="keyword"> const</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> child-&gt;<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a> = <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#ga1510914cb12bcd56b4caa65be360ee3c">l4vbus_get_next_device</a>(<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>.cap(), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, &amp;child-&gt;<a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, depth,</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> devinfo);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span></div>
<div class="foldopen" id="foldopen00189" data-start="{" data-end="}">
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a0bf2b1fdc767393f48f787c51ca20548"> 189</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a0bf2b1fdc767393f48f787c51ca20548">device</a>(<a class="code hl_struct" href="structl4vbus__device__t.html">l4vbus_device_t</a> *devinfo)<span class="keyword"> const</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#ga51a6613ae6f11cc29269bf9623782e1d">l4vbus_get_device</a>(<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>.cap(), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, devinfo); }</div>
</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span></div>
<div class="foldopen" id="foldopen00209" data-start="{" data-end="}">
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a2c8e285f3430e70174615374da658589"> 209</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a2c8e285f3430e70174615374da658589">get_resource</a>(<span class="keywordtype">unsigned</span> res_idx, <a class="code hl_struct" href="structl4vbus__resource__t.html">l4vbus_resource_t</a> *res)<span class="keyword"> const</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#ga73c4138ed1d2d56edb5eabdbcc5da65d">l4vbus_get_resource</a>(<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>.cap(), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, res_idx, res);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> }</div>
</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span></div>
<div class="foldopen" id="foldopen00223" data-start="{" data-end="}">
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#adb0724a360f168a71dba34e640c124f8"> 223</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#adb0724a360f168a71dba34e640c124f8">is_compatible</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *cid)<span class="keyword"> const</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#gada51cecbba0d25a6d05e810b737f3df5">l4vbus_is_compatible</a>(<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>.cap(), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, cid); }</div>
</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span></div>
<div class="foldopen" id="foldopen00230" data-start="{" data-end="}">
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a64fd18112b94f67568dfd48afda5db22"> 230</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a64fd18112b94f67568dfd48afda5db22">operator == </a>(<a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a> <span class="keyword">const</span> &amp;o)<span class="keyword"> const</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a> == o.<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a> &amp;&amp; <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a> == o.<a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> }</div>
</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span></div>
<div class="foldopen" id="foldopen00239" data-start="{" data-end="}">
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#a9f5bce4e7220814a19abb0cdea611330"> 239</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a9f5bce4e7220814a19abb0cdea611330">operator != </a>(<a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a> <span class="keyword">const</span> &amp;o)<span class="keyword"> const</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a> != o.<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a> || <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a> != o.<a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>;</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="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504"> 245</a></span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;Vbus&gt;</a> <a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>; </div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434"> 247</a></span> <a class="code hl_typedef" href="vbus__types_8h.html#a3d2ee122c9c592d768eee886d36b31cf">l4vbus_device_handle_t</a> <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>; </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span>};</div>
</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span></div>
<div class="foldopen" id="foldopen00260" data-start="{" data-end="};">
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Icu.html"> 260</a></span><span class="keyword">class </span><a class="code hl_class" href="classL4vbus_1_1Icu.html">Icu</a> : <span class="keyword">public</span> <a class="code hl_function" href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">Device</a></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span>{</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00264" data-start="{" data-end="};">
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Icu.html#a4d3a953730d56096c5c2184933422dab"> 264</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="classL4vbus_1_1Icu.html#a4d3a953730d56096c5c2184933422dab">Src_types</a></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> {</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Icu.html#a4d3a953730d56096c5c2184933422daba0335924da5b8bd57692cb20ec7970844"> 273</a></span> <a class="code hl_enumvalue" href="classL4vbus_1_1Icu.html#a4d3a953730d56096c5c2184933422daba0335924da5b8bd57692cb20ec7970844">Src_dev_handle</a> = <a class="code hl_enumvalue" href="vbus_8h.html#ad3c3f8bbab387942f996d7627873c002a360bd82c1506c846659e88c4320552a5">L4VBUS_ICU_SRC_DEV_HANDLE</a></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> };</div>
</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span></div>
<div class="foldopen" id="foldopen00285" data-start="{" data-end="}">
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Icu.html#a836655616e1572d6e5453a566c6d6372"> 285</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Icu.html#a836655616e1572d6e5453a566c6d6372">vicu</a>(<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;L4::Icu&gt;</a> icu)<span class="keyword"> const</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#gaefeb0d86979de1ef1aa53951cc3764fd">l4vbus_vicu_get_cap</a>(<a class="code hl_variable" href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">_bus</a>.cap(), <a class="code hl_variable" href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">_dev</a>, icu.<a class="code hl_function" href="classL4_1_1Cap__base.html#a90ff089ca2442b128c2b2b0e1c22c6d7">cap</a>());</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> }</div>
</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span>};</div>
</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span></div>
<div class="foldopen" id="foldopen00298" data-start="{" data-end="};">
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Vbus.html"> 298</a></span><span class="keyword">class </span><a class="code hl_class" href="classL4vbus_1_1Vbus.html">Vbus</a> : <span class="keyword">public</span> <a class="code hl_struct" href="structL4_1_1Kobject__3t.html">L4::Kobject_3t</a>&lt;Vbus, L4Re::Dataspace, L4Re::Inhibitor, L4Re::Event&gt;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span>{</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span></div>
<div class="foldopen" id="foldopen00311" data-start="{" data-end="}">
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Vbus.html#a56f38d95fbcf91235e28b0d0ada87ad4"> 311</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Vbus.html#a56f38d95fbcf91235e28b0d0ada87ad4">request_ioport</a>(<a class="code hl_struct" href="structl4vbus__resource__t.html">l4vbus_resource_t</a> *res)<span class="keyword"> const</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#ga7cafdd96c957a08f9e84b197ecfb956f">l4vbus_request_ioport</a>(<a class="code hl_function" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a>(), res);</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> }</div>
</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span></div>
<div class="foldopen" id="foldopen00323" data-start="{" data-end="}">
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Vbus.html#aa7a0641bf41be1fee81d4d6a871d5ef9"> 323</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Vbus.html#aa7a0641bf41be1fee81d4d6a871d5ef9">release_ioport</a>(<a class="code hl_struct" href="structl4vbus__resource__t.html">l4vbus_resource_t</a> *res)<span class="keyword"> const</span></div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#gaf6d8f34fe76d15c0e3e614c275be84dd">l4vbus_release_ioport</a>(<a class="code hl_function" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a>(), res);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> }</div>
</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span></div>
<div class="foldopen" id="foldopen00336" data-start="{" data-end="}">
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Vbus.html#a553403642b3321b2c96e01497b0c6f8c"> 336</a></span> <a class="code hl_class" href="classL4vbus_1_1Device.html">Device</a> <a class="code hl_function" href="classL4vbus_1_1Vbus.html#a553403642b3321b2c96e01497b0c6f8c">root</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classL4vbus_1_1Device.html">Device</a>(<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;Vbus&gt;</a>(<a class="code hl_function" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a>()), <a class="code hl_enumvalue" href="vbus_8h.html#a11792b1cd672d66434a0c76cfd53ca13ad83203ea1310cc0d5be38f1df326acdd">L4VBUS_ROOT_BUS</a>);</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> }</div>
</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span></div>
<div class="foldopen" id="foldopen00357" data-start="{" data-end="}">
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Vbus.html#a15085069054edbb9b221154e25db52b2"> 357</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Vbus.html#a15085069054edbb9b221154e25db52b2">assign_dma_domain</a>(<span class="keywordtype">unsigned</span> domain_id, <span class="keywordtype">unsigned</span> <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a>,</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;L4Re::Dma_space&gt;</a> dma_space)<span class="keyword"> const</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a> |= <a class="code hl_enumvalue" href="group__l4vbus__module.html#ggaaa3fba66d2a82d325d8882e52586b33ba2ca6d96e2f0b654536a8c680b2e1e008">L4VBUS_DMAD_L4RE_DMA_SPACE</a>;</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a> &amp;= <a class="code hl_enumvalue" href="group__l4vbus__module.html#ggaaa3fba66d2a82d325d8882e52586b33baf498313871474b775ace480b6ba1ae61">~L4VBUS_DMAD_KERNEL_DMA_SPACE</a>;</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#ga230bfade9c21a168c3863cbe4f39e01f">l4vbus_assign_dma_domain</a>(<a class="code hl_function" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a>(), domain_id, <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a>, dma_space.<a class="code hl_function" href="classL4_1_1Cap__base.html#a90ff089ca2442b128c2b2b0e1c22c6d7">cap</a>());</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="foldopen" id="foldopen00382" data-start="{" data-end="}">
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"><a class="line" href="classL4vbus_1_1Vbus.html#a7e78ffe39d692ceeed7e81f6ab1ffc43"> 382</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4vbus_1_1Vbus.html#a7e78ffe39d692ceeed7e81f6ab1ffc43">assign_dma_domain</a>(<span class="keywordtype">unsigned</span> domain_id, <span class="keywordtype">unsigned</span> <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a>,</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap&lt;L4::Task&gt;</a> dma_space)<span class="keyword"> const</span></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a> |= <a class="code hl_enumvalue" href="group__l4vbus__module.html#ggaaa3fba66d2a82d325d8882e52586b33baf498313871474b775ace480b6ba1ae61">L4VBUS_DMAD_KERNEL_DMA_SPACE</a>;</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a> &amp;= <a class="code hl_enumvalue" href="group__l4vbus__module.html#ggaaa3fba66d2a82d325d8882e52586b33ba2ca6d96e2f0b654536a8c680b2e1e008">~L4VBUS_DMAD_L4RE_DMA_SPACE</a>;</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4vbus__module.html#ga230bfade9c21a168c3863cbe4f39e01f">l4vbus_assign_dma_domain</a>(<a class="code hl_function" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a>(), domain_id, <a class="code hl_function" href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">flags</a>, dma_space.<a class="code hl_function" href="classL4_1_1Cap__base.html#a90ff089ca2442b128c2b2b0e1c22c6d7">cap</a>());</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> }</div>
</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> </div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structL4_1_1Typeid_1_1Raw__ipc.html">L4::Typeid::Raw_ipc&lt;Vbus&gt;</a> Rpcs;</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span>};</div>
</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span>} <span class="comment">// namespace L4vbus</span></div>
</div>
<div class="ttc" id="aclassL4Re_1_1Dataspace_html_af96cd7d2c6fd10bfbbb0b426197a231c"><div class="ttname"><a href="classL4Re_1_1Dataspace.html#af96cd7d2c6fd10bfbbb0b426197a231c">L4Re::Dataspace::flags</a></div><div class="ttdeci">Flags flags() const noexcept</div><div class="ttdoc">Get flags of the dataspace.</div><div class="ttdef"><b>Definition</b> <a href="dataspace__impl_8h_source.html#l00111">dataspace_impl.h:111</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="aclassL4_1_1Kobject_html_a4f2117ae76762f4084e6a1adb915863c"><div class="ttname"><a href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">L4::Kobject::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="kobject_source.html#l00069">kobject:69</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html"><div class="ttname"><a href="classL4vbus_1_1Device.html">L4vbus::Device</a></div><div class="ttdoc">Device on a L4vbus::Vbus.</div><div class="ttdef"><b>Definition</b> <a href="#l00083">vbus:84</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a0bf2b1fdc767393f48f787c51ca20548"><div class="ttname"><a href="classL4vbus_1_1Device.html#a0bf2b1fdc767393f48f787c51ca20548">L4vbus::Device::device</a></div><div class="ttdeci">int device(l4vbus_device_t *devinfo) const</div><div class="ttdoc">Obtain detailed information about a Vbus device.</div><div class="ttdef"><b>Definition</b> <a href="#l00189">vbus:189</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a286c71ba7f0ab66fd9d90a9e91dfa560"><div class="ttname"><a href="classL4vbus_1_1Device.html#a286c71ba7f0ab66fd9d90a9e91dfa560">L4vbus::Device::bus_cap</a></div><div class="ttdeci">L4::Cap&lt; Vbus &gt; bus_cap() const</div><div class="ttdoc">Access the Vbus capability of the underlying virtual bus.</div><div class="ttdef"><b>Definition</b> <a href="#l00107">vbus:107</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a2c8e285f3430e70174615374da658589"><div class="ttname"><a href="classL4vbus_1_1Device.html#a2c8e285f3430e70174615374da658589">L4vbus::Device::get_resource</a></div><div class="ttdeci">int get_resource(unsigned res_idx, l4vbus_resource_t *res) const</div><div class="ttdoc">Obtain the resource description of an individual device resource.</div><div class="ttdef"><b>Definition</b> <a href="#l00209">vbus:209</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a3c2cb35016636efb93ca552c1c4b6b96"><div class="ttname"><a href="classL4vbus_1_1Device.html#a3c2cb35016636efb93ca552c1c4b6b96">L4vbus::Device::Device</a></div><div class="ttdeci">Device(L4::Cap&lt; Vbus &gt; bus, l4vbus_device_handle_t dev)</div><div class="ttdoc">Construct a new vbus device using a device handle.</div><div class="ttdef"><b>Definition</b> <a href="#l00100">vbus:100</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a487d5e145d3a21935b61cc231cd84cec"><div class="ttname"><a href="classL4vbus_1_1Device.html#a487d5e145d3a21935b61cc231cd84cec">L4vbus::Device::Device</a></div><div class="ttdeci">Device()</div><div class="ttdoc">Construct a new vbus device using the NULL device L4VBUS_NULL.</div><div class="ttdef"><b>Definition</b> <a href="#l00089">vbus:89</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a555d6ec6b3e9b8d64fb8705f2cdf7cf7"><div class="ttname"><a href="classL4vbus_1_1Device.html#a555d6ec6b3e9b8d64fb8705f2cdf7cf7">L4vbus::Device::device_by_hid</a></div><div class="ttdeci">int device_by_hid(Device *child, char const *hid, int depth=L4VBUS_MAX_DEPTH, l4vbus_device_t *devinfo=0) const</div><div class="ttdoc">Find a device by the hardware interface identifier (HID).</div><div class="ttdef"><b>Definition</b> <a href="#l00148">vbus:148</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a63dcb7dba875e85f09f7ab755836bf2e"><div class="ttname"><a href="classL4vbus_1_1Device.html#a63dcb7dba875e85f09f7ab755836bf2e">L4vbus::Device::dev_handle</a></div><div class="ttdeci">l4vbus_device_handle_t dev_handle() const</div><div class="ttdoc">Access the device handle of this device.</div><div class="ttdef"><b>Definition</b> <a href="#l00116">vbus:116</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a64fd18112b94f67568dfd48afda5db22"><div class="ttname"><a href="classL4vbus_1_1Device.html#a64fd18112b94f67568dfd48afda5db22">L4vbus::Device::operator==</a></div><div class="ttdeci">bool operator==(Device const &amp;o) const</div><div class="ttdoc">Test if two devices are the same Vbus device.</div><div class="ttdef"><b>Definition</b> <a href="#l00230">vbus:230</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_a9f5bce4e7220814a19abb0cdea611330"><div class="ttname"><a href="classL4vbus_1_1Device.html#a9f5bce4e7220814a19abb0cdea611330">L4vbus::Device::operator!=</a></div><div class="ttdeci">bool operator!=(Device const &amp;o) const</div><div class="ttdoc">Test if two Vbus devices are not the same.</div><div class="ttdef"><b>Definition</b> <a href="#l00239">vbus:239</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_ab8a12f148e84113f52856f29f086af50"><div class="ttname"><a href="classL4vbus_1_1Device.html#ab8a12f148e84113f52856f29f086af50">L4vbus::Device::next_device</a></div><div class="ttdeci">int next_device(Device *child, int depth=L4VBUS_MAX_DEPTH, l4vbus_device_t *devinfo=0) const</div><div class="ttdoc">Find next child following child.</div><div class="ttdef"><b>Definition</b> <a href="#l00171">vbus:171</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_ac055a07e37da8daa7b3a93cc833a6434"><div class="ttname"><a href="classL4vbus_1_1Device.html#ac055a07e37da8daa7b3a93cc833a6434">L4vbus::Device::_dev</a></div><div class="ttdeci">l4vbus_device_handle_t _dev</div><div class="ttdoc">The device handle for this device.</div><div class="ttdef"><b>Definition</b> <a href="#l00247">vbus:247</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_acd6f6e54b1b83cd524781ba1bf69e504"><div class="ttname"><a href="classL4vbus_1_1Device.html#acd6f6e54b1b83cd524781ba1bf69e504">L4vbus::Device::_bus</a></div><div class="ttdeci">L4::Cap&lt; Vbus &gt; _bus</div><div class="ttdoc">The Vbus capability where this device is located on.</div><div class="ttdef"><b>Definition</b> <a href="#l00245">vbus:245</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Device_html_adb0724a360f168a71dba34e640c124f8"><div class="ttname"><a href="classL4vbus_1_1Device.html#adb0724a360f168a71dba34e640c124f8">L4vbus::Device::is_compatible</a></div><div class="ttdeci">int is_compatible(char const *cid) const</div><div class="ttdoc">Check if the given device has a compatibility ID (CID) or HID that matches cid.</div><div class="ttdef"><b>Definition</b> <a href="#l00223">vbus:223</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Icu_html"><div class="ttname"><a href="classL4vbus_1_1Icu.html">L4vbus::Icu</a></div><div class="ttdoc">Vbus Interrupt controller API.</div><div class="ttdef"><b>Definition</b> <a href="#l00260">vbus:261</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Icu_html_a4d3a953730d56096c5c2184933422dab"><div class="ttname"><a href="classL4vbus_1_1Icu.html#a4d3a953730d56096c5c2184933422dab">L4vbus::Icu::Src_types</a></div><div class="ttdeci">Src_types</div><div class="ttdoc">Flags that can be used with the ICU on a vbus device.</div><div class="ttdef"><b>Definition</b> <a href="#l00264">vbus:265</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Icu_html_a4d3a953730d56096c5c2184933422daba0335924da5b8bd57692cb20ec7970844"><div class="ttname"><a href="classL4vbus_1_1Icu.html#a4d3a953730d56096c5c2184933422daba0335924da5b8bd57692cb20ec7970844">L4vbus::Icu::Src_dev_handle</a></div><div class="ttdeci">@ Src_dev_handle</div><div class="ttdoc">Flag to denote that the value should be interpreted as a device handle.</div><div class="ttdef"><b>Definition</b> <a href="#l00273">vbus:273</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Icu_html_a836655616e1572d6e5453a566c6d6372"><div class="ttname"><a href="classL4vbus_1_1Icu.html#a836655616e1572d6e5453a566c6d6372">L4vbus::Icu::vicu</a></div><div class="ttdeci">int vicu(L4::Cap&lt; L4::Icu &gt; icu) const</div><div class="ttdoc">Request an L4::Icu capability for this Vbus&#39;s virtual ICU.</div><div class="ttdef"><b>Definition</b> <a href="#l00285">vbus:285</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Pm_html"><div class="ttname"><a href="classL4vbus_1_1Pm.html">L4vbus::Pm</a></div><div class="ttdoc">Power-management API mixin.</div><div class="ttdef"><b>Definition</b> <a href="#l00050">vbus:51</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Pm_html_a3f6361841097aeed4f5eb44fafaaaa42"><div class="ttname"><a href="classL4vbus_1_1Pm.html#a3f6361841097aeed4f5eb44fafaaaa42">L4vbus::Pm::pm_suspend</a></div><div class="ttdeci">int pm_suspend() const</div><div class="ttdoc">Suspend the device.</div><div class="ttdef"><b>Definition</b> <a href="#l00063">vbus:63</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Pm_html_ada27de826a15347a7c49f061c9eb7d30"><div class="ttname"><a href="classL4vbus_1_1Pm.html#ada27de826a15347a7c49f061c9eb7d30">L4vbus::Pm::pm_resume</a></div><div class="ttdeci">int pm_resume() const</div><div class="ttdoc">Resume the device.</div><div class="ttdef"><b>Definition</b> <a href="#l00074">vbus:74</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Vbus_html"><div class="ttname"><a href="classL4vbus_1_1Vbus.html">L4vbus::Vbus</a></div><div class="ttdoc">The virtual bus (Vbus) interface.</div><div class="ttdef"><b>Definition</b> <a href="#l00298">vbus:299</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Vbus_html_a15085069054edbb9b221154e25db52b2"><div class="ttname"><a href="classL4vbus_1_1Vbus.html#a15085069054edbb9b221154e25db52b2">L4vbus::Vbus::assign_dma_domain</a></div><div class="ttdeci">int assign_dma_domain(unsigned domain_id, unsigned flags, L4::Cap&lt; L4Re::Dma_space &gt; dma_space) const</div><div class="ttdoc">Bind or unbind an L4Re::Dma_space to a DMA domain.</div><div class="ttdef"><b>Definition</b> <a href="#l00357">vbus:357</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Vbus_html_a553403642b3321b2c96e01497b0c6f8c"><div class="ttname"><a href="classL4vbus_1_1Vbus.html#a553403642b3321b2c96e01497b0c6f8c">L4vbus::Vbus::root</a></div><div class="ttdeci">Device root() const</div><div class="ttdoc">Get the root device of the device tree of this bus.</div><div class="ttdef"><b>Definition</b> <a href="#l00336">vbus:336</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Vbus_html_a56f38d95fbcf91235e28b0d0ada87ad4"><div class="ttname"><a href="classL4vbus_1_1Vbus.html#a56f38d95fbcf91235e28b0d0ada87ad4">L4vbus::Vbus::request_ioport</a></div><div class="ttdeci">int request_ioport(l4vbus_resource_t *res) const</div><div class="ttdoc">Request the given IO port resource from the bus.</div><div class="ttdef"><b>Definition</b> <a href="#l00311">vbus:311</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Vbus_html_a7e78ffe39d692ceeed7e81f6ab1ffc43"><div class="ttname"><a href="classL4vbus_1_1Vbus.html#a7e78ffe39d692ceeed7e81f6ab1ffc43">L4vbus::Vbus::assign_dma_domain</a></div><div class="ttdeci">int assign_dma_domain(unsigned domain_id, unsigned flags, L4::Cap&lt; L4::Task &gt; dma_space) const</div><div class="ttdoc">Bind or unbind a kernel DMA space to a DMA domain.</div><div class="ttdef"><b>Definition</b> <a href="#l00382">vbus:382</a></div></div>
<div class="ttc" id="aclassL4vbus_1_1Vbus_html_aa7a0641bf41be1fee81d4d6a871d5ef9"><div class="ttname"><a href="classL4vbus_1_1Vbus.html#aa7a0641bf41be1fee81d4d6a871d5ef9">L4vbus::Vbus::release_ioport</a></div><div class="ttdeci">int release_ioport(l4vbus_resource_t *res) const</div><div class="ttdoc">Release the given IO port resource from the bus.</div><div class="ttdef"><b>Definition</b> <a href="#l00323">vbus:323</a></div></div>
<div class="ttc" id="adataspace_html"><div class="ttname"><a href="dataspace.html">dataspace</a></div><div class="ttdoc">Dataspace interface.</div></div>
<div class="ttc" id="adma__space_html"><div class="ttname"><a href="dma__space.html">dma_space</a></div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ga1510914cb12bcd56b4caa65be360ee3c"><div class="ttname"><a href="group__l4vbus__module.html#ga1510914cb12bcd56b4caa65be360ee3c">l4vbus_get_next_device</a></div><div class="ttdeci">int l4vbus_get_next_device(l4_cap_idx_t vbus, l4vbus_device_handle_t parent, l4vbus_device_handle_t *child, int depth, l4vbus_device_t *devinfo)</div><div class="ttdoc">Find next child following child.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ga230bfade9c21a168c3863cbe4f39e01f"><div class="ttname"><a href="group__l4vbus__module.html#ga230bfade9c21a168c3863cbe4f39e01f">l4vbus_assign_dma_domain</a></div><div class="ttdeci">int l4vbus_assign_dma_domain(l4_cap_idx_t vbus, unsigned domain_id, unsigned flags, l4_cap_idx_t dma_space)</div><div class="ttdoc">Bind or unbind a kernel DMA space or a L4Re::Dma_space to a DMA domain.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ga51a6613ae6f11cc29269bf9623782e1d"><div class="ttname"><a href="group__l4vbus__module.html#ga51a6613ae6f11cc29269bf9623782e1d">l4vbus_get_device</a></div><div class="ttdeci">int l4vbus_get_device(l4_cap_idx_t vbus, l4vbus_device_handle_t dev, l4vbus_device_t *devinfo)</div><div class="ttdoc">Obtain detailed information about a Vbus device.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ga73c4138ed1d2d56edb5eabdbcc5da65d"><div class="ttname"><a href="group__l4vbus__module.html#ga73c4138ed1d2d56edb5eabdbcc5da65d">l4vbus_get_resource</a></div><div class="ttdeci">int l4vbus_get_resource(l4_cap_idx_t vbus, l4vbus_device_handle_t dev, unsigned res_idx, l4vbus_resource_t *res)</div><div class="ttdoc">Obtain the resource description of an individual device resource.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ga7cafdd96c957a08f9e84b197ecfb956f"><div class="ttname"><a href="group__l4vbus__module.html#ga7cafdd96c957a08f9e84b197ecfb956f">l4vbus_request_ioport</a></div><div class="ttdeci">int l4vbus_request_ioport(l4_cap_idx_t vbus, l4vbus_resource_t const *res)</div><div class="ttdoc">Request an IO port resource.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_gada51cecbba0d25a6d05e810b737f3df5"><div class="ttname"><a href="group__l4vbus__module.html#gada51cecbba0d25a6d05e810b737f3df5">l4vbus_is_compatible</a></div><div class="ttdeci">int l4vbus_is_compatible(l4_cap_idx_t vbus, l4vbus_device_handle_t dev, char const *cid)</div><div class="ttdoc">Check if the given device has a compatibility ID (CID) or HID that matches cid.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_gaefeb0d86979de1ef1aa53951cc3764fd"><div class="ttname"><a href="group__l4vbus__module.html#gaefeb0d86979de1ef1aa53951cc3764fd">l4vbus_vicu_get_cap</a></div><div class="ttdeci">int l4vbus_vicu_get_cap(l4_cap_idx_t vbus, l4vbus_device_handle_t icu, l4_cap_idx_t cap)</div><div class="ttdoc">Get capability of ICU.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_gaf6d8f34fe76d15c0e3e614c275be84dd"><div class="ttname"><a href="group__l4vbus__module.html#gaf6d8f34fe76d15c0e3e614c275be84dd">l4vbus_release_ioport</a></div><div class="ttdeci">int l4vbus_release_ioport(l4_cap_idx_t vbus, l4vbus_resource_t const *res)</div><div class="ttdoc">Release a previously requested IO port resource.</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_gaf965dbeed4864b72603c5ec69080f1ba"><div class="ttname"><a href="group__l4vbus__module.html#gaf965dbeed4864b72603c5ec69080f1ba">l4vbus_get_device_by_hid</a></div><div class="ttdeci">L4_BEGIN_DECLS int l4vbus_get_device_by_hid(l4_cap_idx_t vbus, l4vbus_device_handle_t parent, l4vbus_device_handle_t *child, char const *hid, int depth, l4vbus_device_t *devinfo)</div><div class="ttdoc">Find a device by the hardware interface identifier (HID).</div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ggaaa3fba66d2a82d325d8882e52586b33ba2ca6d96e2f0b654536a8c680b2e1e008"><div class="ttname"><a href="group__l4vbus__module.html#ggaaa3fba66d2a82d325d8882e52586b33ba2ca6d96e2f0b654536a8c680b2e1e008">L4VBUS_DMAD_L4RE_DMA_SPACE</a></div><div class="ttdeci">@ L4VBUS_DMAD_L4RE_DMA_SPACE</div><div class="ttdoc">The given DMA space is an L4Re::Dma_space.</div><div class="ttdef"><b>Definition</b> <a href="vbus_8h_source.html#l00181">vbus.h:181</a></div></div>
<div class="ttc" id="agroup__l4vbus__module_html_ggaaa3fba66d2a82d325d8882e52586b33baf498313871474b775ace480b6ba1ae61"><div class="ttname"><a href="group__l4vbus__module.html#ggaaa3fba66d2a82d325d8882e52586b33baf498313871474b775ace480b6ba1ae61">L4VBUS_DMAD_KERNEL_DMA_SPACE</a></div><div class="ttdeci">@ L4VBUS_DMAD_KERNEL_DMA_SPACE</div><div class="ttdoc">The given DMA space is a kernel DMA space (L4::Task).</div><div class="ttdef"><b>Definition</b> <a href="vbus_8h_source.html#l00183">vbus.h:183</a></div></div>
<div class="ttc" id="agroup__l4vbus__pm__module_html_ga1b1bb31b74eb1ad50a8bb1f5cca258a9"><div class="ttname"><a href="group__l4vbus__pm__module.html#ga1b1bb31b74eb1ad50a8bb1f5cca258a9">l4vbus_pm_resume</a></div><div class="ttdeci">int l4vbus_pm_resume(l4_cap_idx_t vbus, l4vbus_device_handle_t handle)</div><div class="ttdoc">Resume the device.</div></div>
<div class="ttc" id="agroup__l4vbus__pm__module_html_gaaf9347586738d9980caeff65dd6ca7c7"><div class="ttname"><a href="group__l4vbus__pm__module.html#gaaf9347586738d9980caeff65dd6ca7c7">l4vbus_pm_suspend</a></div><div class="ttdeci">L4_BEGIN_DECLS int l4vbus_pm_suspend(l4_cap_idx_t vbus, l4vbus_device_handle_t handle)</div><div class="ttdoc">Suspend the device.</div></div>
<div class="ttc" id="aicu_html"><div class="ttname"><a href="icu.html">icu</a></div><div class="ttdoc">Interrupt controller.</div></div>
<div class="ttc" id="anamespaceL4vbus_html"><div class="ttname"><a href="namespaceL4vbus.html">L4vbus</a></div><div class="ttdoc">C++ interface of the Vbus API.</div><div class="ttdef"><b>Definition</b> <a href="#l00040">vbus:40</a></div></div>
<div class="ttc" id="astructL4_1_1Kobject__3t_html"><div class="ttname"><a href="structL4_1_1Kobject__3t.html">L4::Kobject_3t</a></div><div class="ttdoc">Helper class to create an L4Re interface class that is derived from three base classes (see L4::Kobje...</div><div class="ttdef"><b>Definition</b> <a href="____typeinfo_8h_source.html#l00930">__typeinfo.h:931</a></div></div>
<div class="ttc" id="astructL4_1_1Typeid_1_1Raw__ipc_html"><div class="ttname"><a href="structL4_1_1Typeid_1_1Raw__ipc.html">L4::Typeid::Raw_ipc</a></div><div class="ttdoc">RPCs list for passing raw incoming IPC to the server object.</div><div class="ttdef"><b>Definition</b> <a href="____typeinfo_8h_source.html#l00412">__typeinfo.h:413</a></div></div>
<div class="ttc" id="astructl4vbus__device__t_html"><div class="ttname"><a href="structl4vbus__device__t.html">l4vbus_device_t</a></div><div class="ttdoc">Detailed information about a vbus device.</div><div class="ttdef"><b>Definition</b> <a href="vbus__types_8h_source.html#l00080">vbus_types.h:80</a></div></div>
<div class="ttc" id="astructl4vbus__resource__t_html"><div class="ttname"><a href="structl4vbus__resource__t.html">l4vbus_resource_t</a></div><div class="ttdoc">Description of a single vbus resource.</div><div class="ttdef"><b>Definition</b> <a href="vbus__types_8h_source.html#l00023">vbus_types.h:23</a></div></div>
<div class="ttc" id="avbus_8h_html"><div class="ttname"><a href="vbus_8h.html">vbus.h</a></div><div class="ttdoc">Description of the vbus C API.</div></div>
<div class="ttc" id="avbus_8h_html_a11792b1cd672d66434a0c76cfd53ca13a37b6c6ee1e53d4ddd172f43a8dedc9b0"><div class="ttname"><a href="vbus_8h.html#a11792b1cd672d66434a0c76cfd53ca13a37b6c6ee1e53d4ddd172f43a8dedc9b0">L4VBUS_NULL</a></div><div class="ttdeci">@ L4VBUS_NULL</div><div class="ttdoc">NULL device.</div><div class="ttdef"><b>Definition</b> <a href="vbus_8h_source.html#l00021">vbus.h:21</a></div></div>
<div class="ttc" id="avbus_8h_html_a11792b1cd672d66434a0c76cfd53ca13ad83203ea1310cc0d5be38f1df326acdd"><div class="ttname"><a href="vbus_8h.html#a11792b1cd672d66434a0c76cfd53ca13ad83203ea1310cc0d5be38f1df326acdd">L4VBUS_ROOT_BUS</a></div><div class="ttdeci">@ L4VBUS_ROOT_BUS</div><div class="ttdoc">Root device on the vbus.</div><div class="ttdef"><b>Definition</b> <a href="vbus_8h_source.html#l00022">vbus.h:22</a></div></div>
<div class="ttc" id="avbus_8h_html_ad3c3f8bbab387942f996d7627873c002a360bd82c1506c846659e88c4320552a5"><div class="ttname"><a href="vbus_8h.html#ad3c3f8bbab387942f996d7627873c002a360bd82c1506c846659e88c4320552a5">L4VBUS_ICU_SRC_DEV_HANDLE</a></div><div class="ttdeci">@ L4VBUS_ICU_SRC_DEV_HANDLE</div><div class="ttdoc">Flag to denote that the value should be interpreted as a device handle.</div><div class="ttdef"><b>Definition</b> <a href="vbus_8h_source.html#l00033">vbus.h:33</a></div></div>
<div class="ttc" id="avbus__types_8h_html_a3d2ee122c9c592d768eee886d36b31cf"><div class="ttname"><a href="vbus__types_8h.html#a3d2ee122c9c592d768eee886d36b31cf">l4vbus_device_handle_t</a></div><div class="ttdeci">l4_mword_t l4vbus_device_handle_t</div><div class="ttdoc">Device handle for a device on the vbus.</div><div class="ttdef"><b>Definition</b> <a href="vbus__types_8h_source.html#l00018">vbus_types.h:18</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>vbus</b></li><li class="navelem"><b>vbus</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>