285 lines
47 KiB
HTML
285 lines
47 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/l4virtio/l4virtio 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('l4virtio_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">l4virtio</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">/* SPDX-License-Identifier: MIT */</span></div>
|
|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">/*</span></div>
|
|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * Copyright (C) 2013-2024 Kernkonzept GmbH.</span></div>
|
|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * Author(s): Alexander Warg <alexander.warg@kernkonzept.com></span></div>
|
|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * Matthias Lange <matthias.lange@kernkonzept.com></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="comment"> */</span></div>
|
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#pragma once</span></div>
|
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
|
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include "virtio.h"</span></div>
|
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include <<a class="code" href="capability.html">l4/sys/capability</a>></span></div>
|
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include <<a class="code" href="ipc__client.html">l4/sys/cxx/ipc_client</a>></span></div>
|
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include <<a class="code" href="dataspace.html">l4/re/dataspace</a>></span></div>
|
|
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include <<a class="code" href="irq.html">l4/sys/irq</a>></span></div>
|
|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include <l4/cxx/utils></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="namespaceL4virtio.html">L4virtio</a> {</div>
|
|
<div class="foldopen" id="foldopen00039" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classL4virtio_1_1Device.html"> 39</a></span><span class="keyword">class </span><a class="code hl_class" href="classL4virtio_1_1Device.html">Device</a> :</div>
|
|
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span> <a class="code hl_class" href="classL4_1_1Kobject__t.html">L4::Kobject_t</a><Device, L4::Icu, L4VIRTIO_PROTOCOL,</div>
|
|
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> L4::Type_info::Demand_t<1> ></div>
|
|
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>{</div>
|
|
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structl4virtio__config__queue__t.html">l4virtio_config_queue_t</a> Config_queue;</div>
|
|
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">struct </span>Config_hdr : <a class="code hl_struct" href="structl4virtio__config__hdr__t.html">l4virtio_config_hdr_t</a></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> Config_queue *queues()<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="group__l4virtio__transport.html#gaa63feff9b6fc10f3cd11e68da6511a4f">l4virtio_config_queues</a>(<span class="keyword">this</span>); }</div>
|
|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
|
|
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
|
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> T *<a class="code hl_function" href="classL4virtio_1_1Device.html#a47e53efa92534451e46ecd4fef7060da">device_config</a>()<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>T*<span class="keyword">></span>(<a class="code hl_function" href="group__l4virtio__transport.html#gaa54e6e4ef7d8a9ae2ebf288e75aca8df">l4virtio_device_config</a>(<span class="keyword">this</span>));</div>
|
|
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> }</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="keywordtype">int</span> <a class="code hl_function" href="classL4virtio_1_1Device.html#a47218ed005d79308d0e297d1a731a517">config_queue</a>(<span class="keywordtype">unsigned</span> num, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> out_notify,</div>
|
|
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> in_notify,</div>
|
|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_struct" href="structl4__timeout__s.html">l4_timeout_s</a> to = <a class="code hl_define" href="group__l4__timeout__api.html#ga10233285bd94a308b93087f765c83218">L4_IPC_TIMEOUT_NEVER</a>)</div>
|
|
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> {</div>
|
|
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">return</span> send_cmd(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07aa9e85fa86a4d204f1da9616c6c8198a7">L4VIRTIO_CMD_CFG_QUEUE</a> | num,</div>
|
|
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> out_notify, in_notify, to);</div>
|
|
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
|
|
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
|
|
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">int</span> notify_queue(<span class="keywordtype">unsigned</span> num, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> out_notify,</div>
|
|
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> in_notify,</div>
|
|
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <a class="code hl_struct" href="structl4__timeout__s.html">l4_timeout_s</a> to = <a class="code hl_define" href="group__l4__timeout__api.html#ga10233285bd94a308b93087f765c83218">L4_IPC_TIMEOUT_NEVER</a>)</div>
|
|
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> {</div>
|
|
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> send_cmd(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07a16616d64d533e999edfefbf490b7720a">L4VIRTIO_CMD_NOTIFY_QUEUE</a> | num,</div>
|
|
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> out_notify, in_notify, to);</div>
|
|
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> }</div>
|
|
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span></div>
|
|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">bool</span> fail_state()<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">auto</span> cfg_status = <a class="code hl_function" href="namespacecxx.html#ab148b2c460eb31462ced9a1eafd9667c">cxx::access_once</a>(&status);</div>
|
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">return</span> cfg_status</div>
|
|
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> & (<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga04d41de4eccf6a17dec99cade7eeeef3a10d14737c37af4077f3966c0b773d60b">L4VIRTIO_STATUS_FAILED</a> | <a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga04d41de4eccf6a17dec99cade7eeeef3afe9c96c7f5d601c2cca07b72fb2bdcfc">L4VIRTIO_STATUS_DEVICE_NEEDS_RESET</a>);</div>
|
|
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> }</div>
|
|
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
|
|
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">int</span> <a class="code hl_function" href="classL4virtio_1_1Device.html#ab2e1044b9a29628c3ed7945b9dfe4cad">set_status</a>(<span class="keywordtype">unsigned</span> new_status, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> out_notify,</div>
|
|
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> in_notify,</div>
|
|
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_struct" href="structl4__timeout__s.html">l4_timeout_s</a> to = <a class="code hl_define" href="group__l4__timeout__api.html#ga10233285bd94a308b93087f765c83218">L4_IPC_TIMEOUT_NEVER</a>)</div>
|
|
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> {</div>
|
|
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">return</span> send_cmd(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07a8927996ae9cb218bf390cb0fb058902f">L4VIRTIO_CMD_SET_STATUS</a> | new_status,</div>
|
|
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> out_notify, in_notify, to);</div>
|
|
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
|
|
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
|
|
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">int</span> cfg_changed(<span class="keywordtype">unsigned</span> reg, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> out_notify,</div>
|
|
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> in_notify,</div>
|
|
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_struct" href="structl4__timeout__s.html">l4_timeout_s</a> to = <a class="code hl_define" href="group__l4__timeout__api.html#ga10233285bd94a308b93087f765c83218">L4_IPC_TIMEOUT_NEVER</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> <span class="keywordflow">return</span> send_cmd(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07af09ad9e572febac6e79eb2faa157bc2a">L4VIRTIO_CMD_CFG_CHANGED</a> | reg,</div>
|
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> out_notify, in_notify, to);</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 class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">int</span> send_cmd(<span class="keywordtype">unsigned</span> command, <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> out_notify,</div>
|
|
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> in_notify,</div>
|
|
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_struct" href="structl4__timeout__s.html">l4_timeout_s</a> to = <a class="code hl_define" href="group__l4__timeout__api.html#ga10233285bd94a308b93087f765c83218">L4_IPC_TIMEOUT_NEVER</a>)</div>
|
|
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> {</div>
|
|
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_function" href="namespacecxx.html#a7f2e154fabb0f6bc7fe788d6debf4338">cxx::write_now</a>(&cmd, command);</div>
|
|
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
|
|
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">if</span> (out_notify)</div>
|
|
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> out_notify->trigger();</div>
|
|
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
|
|
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">auto</span> utcb = <a class="code hl_function" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>();</div>
|
|
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">auto</span> ipc_to = <a class="code hl_function" href="group__l4__timeout__api.html#ga7c5eebe8f0c4b5718ead96072886e7d2">l4_timeout</a>(<a class="code hl_define" href="group__l4__timeout__api.html#ga1fd51d98ee92362453e7bc266fa8b455">L4_IPC_TIMEOUT_0</a>, to);</div>
|
|
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
|
|
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">do</span></div>
|
|
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> {</div>
|
|
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> (in_notify)</div>
|
|
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">if</span> (<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__ipc__api.html#ga3a8617092651c67f9ef1670b53fce66c">l4_ipc_receive</a>(in_notify.<a class="code hl_function" href="classL4_1_1Cap__base.html#a90ff089ca2442b128c2b2b0e1c22c6d7">cap</a>(), utcb, ipc_to),</div>
|
|
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> utcb) == <a class="code hl_enumvalue" href="group__l4__ipc__err__api.html#gga896e67446a2348545f520c46a775c3c3ae6969a577896d63af5ab754eafbcd349">L4_IPC_RETIMEOUT</a>)</div>
|
|
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
|
|
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">while</span> (<a class="code hl_function" href="namespacecxx.html#ab148b2c460eb31462ced9a1eafd9667c">cxx::access_once</a>(&cmd));</div>
|
|
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
|
|
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacecxx.html#ab148b2c460eb31462ced9a1eafd9667c">cxx::access_once</a>(&cmd) ? -<a class="code hl_enumvalue" href="group__l4__error__api.html#ggab4c8abc71ffa221a25c1ca5840a354f9a6e966af53c8cc82f6bcd1464d957d47f">L4_EBUSY</a> : <a class="code hl_enumvalue" href="group__l4__error__api.html#ggab4c8abc71ffa221a25c1ca5840a354f9aca91ea3bdb5bd82f63784ee66b489d5e">L4_EOK</a>;</div>
|
|
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> }</div>
|
|
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> };</div>
|
|
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span></div>
|
|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_define" href="ipc__iface.html#afd77fe126e97c4d046e3842d948ec91d">L4_INLINE_RPC_OP</a>(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa014d4fd31494f662b0840502d875dbd3">L4VIRTIO_OP_SET_STATUS</a>, <span class="keywordtype">long</span>,</div>
|
|
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classL4virtio_1_1Device.html#ab2e1044b9a29628c3ed7945b9dfe4cad"> 138</a></span> <a class="code hl_function" href="classL4virtio_1_1Device.html#ab2e1044b9a29628c3ed7945b9dfe4cad">set_status</a>, (<span class="keywordtype">unsigned</span> status));</div>
|
|
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span></div>
|
|
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_define" href="ipc__iface.html#afd77fe126e97c4d046e3842d948ec91d">L4_INLINE_RPC_OP</a>(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa402baac6222a46ad64de04aee95f1fdd">L4VIRTIO_OP_CONFIG_QUEUE</a>, <span class="keywordtype">long</span>,</div>
|
|
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="classL4virtio_1_1Device.html#a47218ed005d79308d0e297d1a731a517"> 156</a></span> <a class="code hl_function" href="classL4virtio_1_1Device.html#a47218ed005d79308d0e297d1a731a517">config_queue</a>, (<span class="keywordtype">unsigned</span> queue));</div>
|
|
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span></div>
|
|
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <a class="code hl_define" href="ipc__iface.html#afd77fe126e97c4d046e3842d948ec91d">L4_INLINE_RPC_OP</a>(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa851241cc70d9d9619fb9203a6f043af9">L4VIRTIO_OP_REGISTER_DS</a>, <span class="keywordtype">long</span>,</div>
|
|
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_function" href="classL4virtio_1_1Device.html#a033005cb79e876d02b8ca405ffadca2b">register_ds</a>, (<a class="code hl_class" href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap<L4Re::Dataspace></a> ds_cap,</div>
|
|
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <a class="code hl_typedef" href="group__l4__basic__types.html#gaf3331c485014bd12a9e4f9d27a55e689">l4_uint64_t</a> base, <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> offset,</div>
|
|
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"><a class="line" href="classL4virtio_1_1Device.html#a033005cb79e876d02b8ca405ffadca2b"> 184</a></span> <a class="code hl_typedef" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> size));</div>
|
|
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span></div>
|
|
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <a class="code hl_define" href="ipc__iface.html#afd77fe126e97c4d046e3842d948ec91d">L4_INLINE_RPC_OP</a>(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa0777199de23f1eac9a5ee8b28ca9af06">L4VIRTIO_OP_DEVICE_CONFIG</a>, <span class="keywordtype">long</span>, <a class="code hl_function" href="classL4virtio_1_1Device.html#a47e53efa92534451e46ecd4fef7060da">device_config</a>,</div>
|
|
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> (<a class="code hl_struct" href="structL4_1_1Ipc_1_1Out.html">L4::Ipc::Out</a><<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4Re::Dataspace></a> > config_ds,</div>
|
|
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="classL4virtio_1_1Device.html#a47e53efa92534451e46ecd4fef7060da"> 196</a></span> <a class="code hl_typedef" href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a> *ds_offset));</div>
|
|
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span></div>
|
|
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <a class="code hl_define" href="ipc__iface.html#afd77fe126e97c4d046e3842d948ec91d">L4_INLINE_RPC_OP</a>(<a class="code hl_enumvalue" href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa02de33b7e0f1d1095546bed52c7ffbee">L4VIRTIO_OP_GET_DEVICE_IRQ</a>, <span class="keywordtype">long</span>, <a class="code hl_function" href="classL4virtio_1_1Device.html#a2c81a536513972d43f95394d88c39147">device_notification_irq</a>,</div>
|
|
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classL4virtio_1_1Device.html#a2c81a536513972d43f95394d88c39147"> 217</a></span> (<span class="keywordtype">unsigned</span> index, <a class="code hl_struct" href="structL4_1_1Ipc_1_1Out.html">L4::Ipc::Out</a><<a class="code hl_class" href="classL4_1_1Cap.html">L4::Cap<L4::Triggerable></a> > irq));</div>
|
|
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
|
|
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> </div>
|
|
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structL4_1_1Typeid_1_1Rpcs.html">L4::Typeid::Rpcs</a><set_status_t, config_queue_t, register_ds_t,</div>
|
|
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> device_config_t, device_notification_irq_t></div>
|
|
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> Rpcs;</div>
|
|
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> </div>
|
|
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span>}</div>
|
|
<div class="ttc" id="acapability_html"><div class="ttname"><a href="capability.html">capability</a></div><div class="ttdoc">L4::Cap related definitions.</div></div>
|
|
<div class="ttc" id="aclassL4_1_1Cap__base_html_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_1Ipc_1_1Cap_html"><div class="ttname"><a href="classL4_1_1Ipc_1_1Cap.html">L4::Ipc::Cap</a></div><div class="ttdoc">Capability type for RPC interfaces (see L4::Cap<T>).</div><div class="ttdef"><b>Definition</b> <a href="ipc__types_source.html#l00698">ipc_types:699</a></div></div>
|
|
<div class="ttc" id="aclassL4_1_1Kobject__t_html"><div class="ttname"><a href="classL4_1_1Kobject__t.html">L4::Kobject_t</a></div><div class="ttdoc">Helper class to create an L4Re interface class that is derived from a single base class.</div><div class="ttdef"><b>Definition</b> <a href="____typeinfo_8h_source.html#l00749">__typeinfo.h:750</a></div></div>
|
|
<div class="ttc" id="aclassL4virtio_1_1Device_html"><div class="ttname"><a href="classL4virtio_1_1Device.html">L4virtio::Device</a></div><div class="ttdoc">IPC interface for virtio over L4 IPC.</div><div class="ttdef"><b>Definition</b> <a href="#l00039">l4virtio:42</a></div></div>
|
|
<div class="ttc" id="aclassL4virtio_1_1Device_html_a033005cb79e876d02b8ca405ffadca2b"><div class="ttname"><a href="classL4virtio_1_1Device.html#a033005cb79e876d02b8ca405ffadca2b">L4virtio::Device::register_ds</a></div><div class="ttdeci">long register_ds(L4::Ipc::Cap< L4Re::Dataspace > ds_cap, l4_uint64_t base, l4_umword_t offset, l4_umword_t size)</div><div class="ttdoc">Register a shared data space with VIRTIO host.</div></div>
|
|
<div class="ttc" id="aclassL4virtio_1_1Device_html_a2c81a536513972d43f95394d88c39147"><div class="ttname"><a href="classL4virtio_1_1Device.html#a2c81a536513972d43f95394d88c39147">L4virtio::Device::device_notification_irq</a></div><div class="ttdeci">long device_notification_irq(unsigned index, L4::Ipc::Out< L4::Cap< L4::Triggerable > > irq)</div><div class="ttdoc">Get the notification interrupt corresponding to the given index.</div></div>
|
|
<div class="ttc" id="aclassL4virtio_1_1Device_html_a47218ed005d79308d0e297d1a731a517"><div class="ttname"><a href="classL4virtio_1_1Device.html#a47218ed005d79308d0e297d1a731a517">L4virtio::Device::config_queue</a></div><div class="ttdeci">long config_queue(unsigned queue)</div><div class="ttdoc">Trigger queue configuration of the given queue.</div></div>
|
|
<div class="ttc" id="aclassL4virtio_1_1Device_html_a47e53efa92534451e46ecd4fef7060da"><div class="ttname"><a href="classL4virtio_1_1Device.html#a47e53efa92534451e46ecd4fef7060da">L4virtio::Device::device_config</a></div><div class="ttdeci">long device_config(L4::Ipc::Out< L4::Cap< L4Re::Dataspace > > config_ds, l4_addr_t *ds_offset)</div><div class="ttdoc">Get the dataspace with the L4virtio configuration page.</div></div>
|
|
<div class="ttc" id="aclassL4virtio_1_1Device_html_ab2e1044b9a29628c3ed7945b9dfe4cad"><div class="ttname"><a href="classL4virtio_1_1Device.html#ab2e1044b9a29628c3ed7945b9dfe4cad">L4virtio::Device::set_status</a></div><div class="ttdeci">long set_status(unsigned status)</div><div class="ttdoc">Write the VIRTIO status register.</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="agroup__l4__basic__types_html_ga1c2c4b333f75b1d05b59855910f2b9cb"><div class="ttname"><a href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></div><div class="ttdeci">unsigned long l4_umword_t</div><div class="ttdoc">Unsigned machine word.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2l4int_8h_source.html#l00040">l4int.h:40</a></div></div>
|
|
<div class="ttc" id="agroup__l4__basic__types_html_ga4087b991c40c0d2fcde9ca331049a4d4"><div class="ttname"><a href="group__l4__basic__types.html#ga4087b991c40c0d2fcde9ca331049a4d4">l4_addr_t</a></div><div class="ttdeci">unsigned long l4_addr_t</div><div class="ttdoc">Address type.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2l4int_8h_source.html#l00034">l4int.h:34</a></div></div>
|
|
<div class="ttc" id="agroup__l4__basic__types_html_gaf3331c485014bd12a9e4f9d27a55e689"><div class="ttname"><a href="group__l4__basic__types.html#gaf3331c485014bd12a9e4f9d27a55e689">l4_uint64_t</a></div><div class="ttdeci">unsigned long long l4_uint64_t</div><div class="ttdoc">Unsigned 64bit value.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2l4int_8h_source.html#l00031">l4int.h:31</a></div></div>
|
|
<div class="ttc" id="agroup__l4__error__api_html_ggab4c8abc71ffa221a25c1ca5840a354f9a6e966af53c8cc82f6bcd1464d957d47f"><div class="ttname"><a href="group__l4__error__api.html#ggab4c8abc71ffa221a25c1ca5840a354f9a6e966af53c8cc82f6bcd1464d957d47f">L4_EBUSY</a></div><div class="ttdeci">@ L4_EBUSY</div><div class="ttdoc">Object currently busy, try later.</div><div class="ttdef"><b>Definition</b> <a href="err_8h_source.html#l00042">err.h:42</a></div></div>
|
|
<div class="ttc" id="agroup__l4__error__api_html_ggab4c8abc71ffa221a25c1ca5840a354f9aca91ea3bdb5bd82f63784ee66b489d5e"><div class="ttname"><a href="group__l4__error__api.html#ggab4c8abc71ffa221a25c1ca5840a354f9aca91ea3bdb5bd82f63784ee66b489d5e">L4_EOK</a></div><div class="ttdeci">@ L4_EOK</div><div class="ttdoc">Ok.</div><div class="ttdef"><b>Definition</b> <a href="err_8h_source.html#l00032">err.h:32</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__api_html_ga3a8617092651c67f9ef1670b53fce66c"><div class="ttname"><a href="group__l4__ipc__api.html#ga3a8617092651c67f9ef1670b53fce66c">l4_ipc_receive</a></div><div class="ttdeci">l4_msgtag_t l4_ipc_receive(l4_cap_idx_t object, l4_utcb_t *utcb, l4_timeout_t timeout) L4_NOTHROW</div><div class="ttdoc">Wait for a message from a specific source.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00602">ipc.h:602</a></div></div>
|
|
<div class="ttc" id="agroup__l4__ipc__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__ipc__err__api_html_gga896e67446a2348545f520c46a775c3c3ae6969a577896d63af5ab754eafbcd349"><div class="ttname"><a href="group__l4__ipc__err__api.html#gga896e67446a2348545f520c46a775c3c3ae6969a577896d63af5ab754eafbcd349">L4_IPC_RETIMEOUT</a></div><div class="ttdeci">@ L4_IPC_RETIMEOUT</div><div class="ttdoc">Timeout during receive operation.</div><div class="ttdef"><b>Definition</b> <a href="l4_2sys_2ipc_8h_source.html#l00089">ipc.h:89</a></div></div>
|
|
<div class="ttc" id="agroup__l4__timeout__api_html_ga10233285bd94a308b93087f765c83218"><div class="ttname"><a href="group__l4__timeout__api.html#ga10233285bd94a308b93087f765c83218">L4_IPC_TIMEOUT_NEVER</a></div><div class="ttdeci">#define L4_IPC_TIMEOUT_NEVER</div><div class="ttdoc">never timeout</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00074">__timeout.h:74</a></div></div>
|
|
<div class="ttc" id="agroup__l4__timeout__api_html_ga1fd51d98ee92362453e7bc266fa8b455"><div class="ttname"><a href="group__l4__timeout__api.html#ga1fd51d98ee92362453e7bc266fa8b455">L4_IPC_TIMEOUT_0</a></div><div class="ttdeci">#define L4_IPC_TIMEOUT_0</div><div class="ttdoc">Timeout constants.</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00073">__timeout.h:73</a></div></div>
|
|
<div class="ttc" id="agroup__l4__timeout__api_html_ga7c5eebe8f0c4b5718ead96072886e7d2"><div class="ttname"><a href="group__l4__timeout__api.html#ga7c5eebe8f0c4b5718ead96072886e7d2">l4_timeout</a></div><div class="ttdeci">L4_CONSTEXPR l4_timeout_t l4_timeout(l4_timeout_s snd, l4_timeout_s rcv) L4_NOTHROW</div><div class="ttdoc">Combine send and receive timeout in a timeout.</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00213">__timeout.h:213</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="agroup__l4virtio__transport_html_gaa54e6e4ef7d8a9ae2ebf288e75aca8df"><div class="ttname"><a href="group__l4virtio__transport.html#gaa54e6e4ef7d8a9ae2ebf288e75aca8df">l4virtio_device_config</a></div><div class="ttdeci">void * l4virtio_device_config(l4virtio_config_hdr_t const *cfg)</div><div class="ttdoc">Get the pointer to the device configuration.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00263">virtio.h:263</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gaa63feff9b6fc10f3cd11e68da6511a4f"><div class="ttname"><a href="group__l4virtio__transport.html#gaa63feff9b6fc10f3cd11e68da6511a4f">l4virtio_config_queues</a></div><div class="ttdeci">L4_BEGIN_DECLS l4virtio_config_queue_t * l4virtio_config_queues(l4virtio_config_hdr_t const *cfg)</div><div class="ttdoc">Get the pointer to the first queue config.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00252">virtio.h:252</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga04d41de4eccf6a17dec99cade7eeeef3a10d14737c37af4077f3966c0b773d60b"><div class="ttname"><a href="group__l4virtio__transport.html#gga04d41de4eccf6a17dec99cade7eeeef3a10d14737c37af4077f3966c0b773d60b">L4VIRTIO_STATUS_FAILED</a></div><div class="ttdeci">@ L4VIRTIO_STATUS_FAILED</div><div class="ttdoc">Driver detected fatal error.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00094">virtio.h:94</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga04d41de4eccf6a17dec99cade7eeeef3afe9c96c7f5d601c2cca07b72fb2bdcfc"><div class="ttname"><a href="group__l4virtio__transport.html#gga04d41de4eccf6a17dec99cade7eeeef3afe9c96c7f5d601c2cca07b72fb2bdcfc">L4VIRTIO_STATUS_DEVICE_NEEDS_RESET</a></div><div class="ttdeci">@ L4VIRTIO_STATUS_DEVICE_NEEDS_RESET</div><div class="ttdoc">Device detected fatal error.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00093">virtio.h:93</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga2022e1e0e041558008a92a4cfe3efe6aa014d4fd31494f662b0840502d875dbd3"><div class="ttname"><a href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa014d4fd31494f662b0840502d875dbd3">L4VIRTIO_OP_SET_STATUS</a></div><div class="ttdeci">@ L4VIRTIO_OP_SET_STATUS</div><div class="ttdoc">Write device status register.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00054">virtio.h:54</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga2022e1e0e041558008a92a4cfe3efe6aa02de33b7e0f1d1095546bed52c7ffbee"><div class="ttname"><a href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa02de33b7e0f1d1095546bed52c7ffbee">L4VIRTIO_OP_GET_DEVICE_IRQ</a></div><div class="ttdeci">@ L4VIRTIO_OP_GET_DEVICE_IRQ</div><div class="ttdoc">Retrieve device notification IRQ.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00058">virtio.h:58</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga2022e1e0e041558008a92a4cfe3efe6aa0777199de23f1eac9a5ee8b28ca9af06"><div class="ttname"><a href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa0777199de23f1eac9a5ee8b28ca9af06">L4VIRTIO_OP_DEVICE_CONFIG</a></div><div class="ttdeci">@ L4VIRTIO_OP_DEVICE_CONFIG</div><div class="ttdoc">Get device config page.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00057">virtio.h:57</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga2022e1e0e041558008a92a4cfe3efe6aa402baac6222a46ad64de04aee95f1fdd"><div class="ttname"><a href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa402baac6222a46ad64de04aee95f1fdd">L4VIRTIO_OP_CONFIG_QUEUE</a></div><div class="ttdeci">@ L4VIRTIO_OP_CONFIG_QUEUE</div><div class="ttdoc">Configure queue.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00055">virtio.h:55</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga2022e1e0e041558008a92a4cfe3efe6aa851241cc70d9d9619fb9203a6f043af9"><div class="ttname"><a href="group__l4virtio__transport.html#gga2022e1e0e041558008a92a4cfe3efe6aa851241cc70d9d9619fb9203a6f043af9">L4VIRTIO_OP_REGISTER_DS</a></div><div class="ttdeci">@ L4VIRTIO_OP_REGISTER_DS</div><div class="ttdoc">Register shared memory with device.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00056">virtio.h:56</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga4783b17d00ec949f63c11c7bda0eed07a16616d64d533e999edfefbf490b7720a"><div class="ttname"><a href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07a16616d64d533e999edfefbf490b7720a">L4VIRTIO_CMD_NOTIFY_QUEUE</a></div><div class="ttdeci">@ L4VIRTIO_CMD_NOTIFY_QUEUE</div><div class="ttdoc">Configure a queue.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00125">virtio.h:125</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga4783b17d00ec949f63c11c7bda0eed07a8927996ae9cb218bf390cb0fb058902f"><div class="ttname"><a href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07a8927996ae9cb218bf390cb0fb058902f">L4VIRTIO_CMD_SET_STATUS</a></div><div class="ttdeci">@ L4VIRTIO_CMD_SET_STATUS</div><div class="ttdoc">Set the status register.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00122">virtio.h:122</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga4783b17d00ec949f63c11c7bda0eed07aa9e85fa86a4d204f1da9616c6c8198a7"><div class="ttname"><a href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07aa9e85fa86a4d204f1da9616c6c8198a7">L4VIRTIO_CMD_CFG_QUEUE</a></div><div class="ttdeci">@ L4VIRTIO_CMD_CFG_QUEUE</div><div class="ttdoc">Configure a queue.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00123">virtio.h:123</a></div></div>
|
|
<div class="ttc" id="agroup__l4virtio__transport_html_gga4783b17d00ec949f63c11c7bda0eed07af09ad9e572febac6e79eb2faa157bc2a"><div class="ttname"><a href="group__l4virtio__transport.html#gga4783b17d00ec949f63c11c7bda0eed07af09ad9e572febac6e79eb2faa157bc2a">L4VIRTIO_CMD_CFG_CHANGED</a></div><div class="ttdeci">@ L4VIRTIO_CMD_CFG_CHANGED</div><div class="ttdoc">Device config changed.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00124">virtio.h:124</a></div></div>
|
|
<div class="ttc" id="aipc__client_html"><div class="ttname"><a href="ipc__client.html">ipc_client</a></div></div>
|
|
<div class="ttc" id="aipc__iface_html_afd77fe126e97c4d046e3842d948ec91d"><div class="ttname"><a href="ipc__iface.html#afd77fe126e97c4d046e3842d948ec91d">L4_INLINE_RPC_OP</a></div><div class="ttdeci">#define L4_INLINE_RPC_OP(op, res, name, args, attr...)</div><div class="ttdoc">Define an inline RPC call with specific opcode (type and callable).</div><div class="ttdef"><b>Definition</b> <a href="ipc__iface_source.html#l00497">ipc_iface:497</a></div></div>
|
|
<div class="ttc" id="airq_html"><div class="ttname"><a href="irq.html">irq</a></div><div class="ttdoc">C++ Irq interface.</div></div>
|
|
<div class="ttc" id="anamespaceL4virtio_html"><div class="ttname"><a href="namespaceL4virtio.html">L4virtio</a></div><div class="ttdoc">L4-VIRTIO Transport C++ API.</div><div class="ttdef"><b>Definition</b> <a href="client_2l4virtio_source.html#l00026">l4virtio:26</a></div></div>
|
|
<div class="ttc" id="anamespacecxx_html_a7f2e154fabb0f6bc7fe788d6debf4338"><div class="ttname"><a href="namespacecxx.html#a7f2e154fabb0f6bc7fe788d6debf4338">cxx::write_now</a></div><div class="ttdeci">void write_now(T *a, VAL &&val)</div><div class="ttdoc">Write a value at an address exactly once.</div><div class="ttdef"><b>Definition</b> <a href="utils_source.html#l00071">utils:71</a></div></div>
|
|
<div class="ttc" id="anamespacecxx_html_ab148b2c460eb31462ced9a1eafd9667c"><div class="ttname"><a href="namespacecxx.html#ab148b2c460eb31462ced9a1eafd9667c">cxx::access_once</a></div><div class="ttdeci">T access_once(T const *a)</div><div class="ttdoc">Read the value at an address at most once.</div><div class="ttdef"><b>Definition</b> <a href="utils_source.html#l00040">utils:40</a></div></div>
|
|
<div class="ttc" id="astructL4_1_1Ipc_1_1Out_html"><div class="ttname"><a href="structL4_1_1Ipc_1_1Out.html">L4::Ipc::Out</a></div><div class="ttdoc">Mark an argument as a output value in an RPC signature.</div><div class="ttdef"><b>Definition</b> <a href="ipc__types_source.html#l00031">ipc_types:31</a></div></div>
|
|
<div class="ttc" id="astructL4_1_1Typeid_1_1Rpcs_html"><div class="ttname"><a href="structL4_1_1Typeid_1_1Rpcs.html">L4::Typeid::Rpcs</a></div><div class="ttdoc">Standard list of RPCs of an interface.</div><div class="ttdef"><b>Definition</b> <a href="____typeinfo_8h_source.html#l00428">__typeinfo.h:428</a></div></div>
|
|
<div class="ttc" id="astructl4__timeout__s_html"><div class="ttname"><a href="structl4__timeout__s.html">l4_timeout_s</a></div><div class="ttdoc">Basic timeout specification.</div><div class="ttdef"><b>Definition</b> <a href="____timeout_8h_source.html#l00040">__timeout.h:40</a></div></div>
|
|
<div class="ttc" id="astructl4virtio__config__hdr__t_html"><div class="ttname"><a href="structl4virtio__config__hdr__t.html">l4virtio_config_hdr_t</a></div><div class="ttdoc">L4-VIRTIO config header, provided in shared data space.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00132">virtio.h:133</a></div></div>
|
|
<div class="ttc" id="astructl4virtio__config__queue__t_html"><div class="ttname"><a href="structl4virtio__config__queue__t.html">l4virtio_config_queue_t</a></div><div class="ttdoc">Queue configuration entry.</div><div class="ttdef"><b>Definition</b> <a href="virtio_8h_source.html#l00223">virtio.h:224</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>l4virtio</b></li><li class="navelem"><b>l4virtio</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>
|