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

1016 lines
67 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: L4virtio::Virtqueue Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="l4re-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="L4Re_rgb_logo_quer_hg_h55.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">L4Re Operating System Framework
</div>
<div id="projectbrief">Interface and Usage Documentation</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.15.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('classL4virtio_1_1Virtqueue.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::Virtqueue Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Low-level <a class="el" href="classL4virtio_1_1Virtqueue.html" title="Low-level Virtqueue.">Virtqueue</a>.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="virtqueue_source.html">virtqueue</a>&gt;</code></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Inheritance diagram for L4virtio::Virtqueue:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue__inherit__graph.svg" width="382" height="870"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for L4virtio::Virtqueue:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue__coll__graph.svg" width="794" height="1214"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:Desc" id="r_Desc"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Descriptor in the descriptor table. <a href="classL4virtio_1_1Virtqueue_1_1Desc.html#details">More...</a><br /></td></tr>
<tr class="memitem:Avail" id="r_Avail"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue_1_1Avail.html">Avail</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of available ring, this is read-only for the host. <a href="classL4virtio_1_1Virtqueue_1_1Avail.html#details">More...</a><br /></td></tr>
<tr class="memitem:Used_5Felem" id="r_Used_5Felem"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4virtio_1_1Virtqueue_1_1Used__elem.html">Used_elem</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of an element of the used ring. <a href="structL4virtio_1_1Virtqueue_1_1Used__elem.html#details">More...</a><br /></td></tr>
<tr class="memitem:Used" id="r_Used"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue_1_1Used.html">Used</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classL4virtio_1_1Virtqueue_1_1Used.html" title="Used ring.">Used</a> ring. <a href="classL4virtio_1_1Virtqueue_1_1Used.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-types" class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a70b4f24744f0b446a27e8273402757b4" id="r_a70b4f24744f0b446a27e8273402757b4"><td class="memItemLeft" align="right" valign="top"><a id="a70b4f24744f0b446a27e8273402757b4" name="a70b4f24744f0b446a27e8273402757b4"></a>enum &#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="memdesc:a70b4f24744f0b446a27e8273402757b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fixed alignment values for different parts of a virtqueue. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a031d371276beec1cb5cf550be6fac491" id="r_a031d371276beec1cb5cf550be6fac491"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a031d371276beec1cb5cf550be6fac491">disable</a> ()</td></tr>
<tr class="memdesc:a031d371276beec1cb5cf550be6fac491"><td class="mdescLeft">&#160;</td><td class="mdescRight">Completely disable the queue. <br /></td></tr>
<tr class="memitem:a96dfd139f3a022e9e2328e28716acdc9" id="r_a96dfd139f3a022e9e2328e28716acdc9"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a96dfd139f3a022e9e2328e28716acdc9">total_size</a> () const</td></tr>
<tr class="memdesc:a96dfd139f3a022e9e2328e28716acdc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the total size of this virtqueue. <br /></td></tr>
<tr class="memitem:a5a4db3f2c9356da05cd5b472ebc2f0e6" id="r_a5a4db3f2c9356da05cd5b472ebc2f0e6"><td class="memItemLeft" align="right" valign="top"><a id="a5a4db3f2c9356da05cd5b472ebc2f0e6" name="a5a4db3f2c9356da05cd5b472ebc2f0e6"></a>
unsigned long&#160;</td><td class="memItemRight" valign="bottom"><b>avail_offset</b> () const</td></tr>
<tr class="memdesc:a5a4db3f2c9356da05cd5b472ebc2f0e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the offset of the available ring from the descriptor table. <br /></td></tr>
<tr class="memitem:a80c6d7100b025658ad3c05a844e4391b" id="r_a80c6d7100b025658ad3c05a844e4391b"><td class="memItemLeft" align="right" valign="top"><a id="a80c6d7100b025658ad3c05a844e4391b" name="a80c6d7100b025658ad3c05a844e4391b"></a>
unsigned long&#160;</td><td class="memItemRight" valign="bottom"><b>used_offset</b> () const</td></tr>
<tr class="memdesc:a80c6d7100b025658ad3c05a844e4391b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the offset of the used ring from the descriptor table. <br /></td></tr>
<tr class="memitem:a109ea5677dd074df1d2c6a06056c7d82" id="r_a109ea5677dd074df1d2c6a06056c7d82"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a109ea5677dd074df1d2c6a06056c7d82">setup</a> (unsigned <a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>, void *desc, void *avail, void *used)</td></tr>
<tr class="memdesc:a109ea5677dd074df1d2c6a06056c7d82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable this queue. <br /></td></tr>
<tr class="memitem:a437c0ed2eb83201cc69c41d011503036" id="r_a437c0ed2eb83201cc69c41d011503036"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a437c0ed2eb83201cc69c41d011503036">setup_simple</a> (unsigned <a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>, void *ring)</td></tr>
<tr class="memdesc:a437c0ed2eb83201cc69c41d011503036"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable this queue. <br /></td></tr>
<tr class="memitem:a3abd68687a8a7d957e9b765433a313ed" id="r_a3abd68687a8a7d957e9b765433a313ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3abd68687a8a7d957e9b765433a313ed">dump</a> (<a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> const *d) const</td></tr>
<tr class="memdesc:a3abd68687a8a7d957e9b765433a313ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump descriptors for this queue. <br /></td></tr>
<tr class="memitem:aa242e930433e8705c4ee00afaf58f686" id="r_aa242e930433e8705c4ee00afaf58f686"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa242e930433e8705c4ee00afaf58f686">ready</a> () const</td></tr>
<tr class="memdesc:aa242e930433e8705c4ee00afaf58f686"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if this queue is in working state. <br /></td></tr>
<tr class="memitem:af61e3e4e436b93f37f22243a1c0ffe0e" id="r_af61e3e4e436b93f37f22243a1c0ffe0e"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a> () const</td></tr>
<tr class="memitem:a2aa2efa2e5f6ee73423ec9beab40232a" id="r_a2aa2efa2e5f6ee73423ec9beab40232a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2aa2efa2e5f6ee73423ec9beab40232a">no_notify_guest</a> () const</td></tr>
<tr class="memdesc:a2aa2efa2e5f6ee73423ec9beab40232a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the no IRQ flag of this queue. <br /></td></tr>
<tr class="memitem:ad478e575bf6023866e8bd4ea6b5b0200" id="r_ad478e575bf6023866e8bd4ea6b5b0200"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad478e575bf6023866e8bd4ea6b5b0200">no_notify_host</a> () const</td></tr>
<tr class="memdesc:ad478e575bf6023866e8bd4ea6b5b0200"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the no notify flag of this queue. <br /></td></tr>
<tr class="memitem:a019fa2078eaca937bd0685b79728f986" id="r_a019fa2078eaca937bd0685b79728f986"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a019fa2078eaca937bd0685b79728f986">no_notify_host</a> (bool value)</td></tr>
<tr class="memdesc:a019fa2078eaca937bd0685b79728f986"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the no-notify flag for this queue. <br /></td></tr>
<tr class="memitem:abc1894fea1ed246b57027323f611de9d" id="r_abc1894fea1ed246b57027323f611de9d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abc1894fea1ed246b57027323f611de9d">get_avail_idx</a> () const</td></tr>
<tr class="memdesc:abc1894fea1ed246b57027323f611de9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get available index from available ring (for debugging). <br /></td></tr>
<tr class="memitem:a1b548bdf762ff26ca411c20763377986" id="r_a1b548bdf762ff26ca411c20763377986"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1b548bdf762ff26ca411c20763377986">get_tail_avail_idx</a> () const</td></tr>
<tr class="memdesc:a1b548bdf762ff26ca411c20763377986"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get tail-available index stored in local state (for debugging). <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-methods" class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a6f8cdc52ebe6322c3023e05e0e055293" id="r_a6f8cdc52ebe6322c3023e05e0e055293"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6f8cdc52ebe6322c3023e05e0e055293">total_size</a> (unsigned <a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
<tr class="memdesc:a6f8cdc52ebe6322c3023e05e0e055293"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the total size for a virtqueue of the given dimensions. <br /></td></tr>
<tr class="memitem:a19410c09db5499023cb4b9f11742cd26" id="r_a19410c09db5499023cb4b9f11742cd26"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a19410c09db5499023cb4b9f11742cd26">desc_size</a> (unsigned <a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
<tr class="memdesc:a19410c09db5499023cb4b9f11742cd26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the size of the descriptor table for <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. <br /></td></tr>
<tr class="memitem:a748641c2fbc97de84af1325718d79c91" id="r_a748641c2fbc97de84af1325718d79c91"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a748641c2fbc97de84af1325718d79c91">desc_align</a> ()</td></tr>
<tr class="memdesc:a748641c2fbc97de84af1325718d79c91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the alignment in zero LSBs needed for the descriptor table. <br /></td></tr>
<tr class="memitem:a962767a117dad07184f59191d399f9ce" id="r_a962767a117dad07184f59191d399f9ce"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a962767a117dad07184f59191d399f9ce">avail_size</a> (unsigned <a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
<tr class="memdesc:a962767a117dad07184f59191d399f9ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the size of the available ring for <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. <br /></td></tr>
<tr class="memitem:a2d23419189e2531f604a5700460794e4" id="r_a2d23419189e2531f604a5700460794e4"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2d23419189e2531f604a5700460794e4">avail_align</a> ()</td></tr>
<tr class="memdesc:a2d23419189e2531f604a5700460794e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the alignment in zero LSBs needed for the available ring. <br /></td></tr>
<tr class="memitem:a7747ac81d7fd21e1e55e43c2e7ead2ea" id="r_a7747ac81d7fd21e1e55e43c2e7ead2ea"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7747ac81d7fd21e1e55e43c2e7ead2ea">used_size</a> (unsigned <a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
<tr class="memdesc:a7747ac81d7fd21e1e55e43c2e7ead2ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the size of the used ring for <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. <br /></td></tr>
<tr class="memitem:a6a7f4c453e083ba56a64018f2f37a405" id="r_a6a7f4c453e083ba56a64018f2f37a405"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6a7f4c453e083ba56a64018f2f37a405">used_align</a> ()</td></tr>
<tr class="memdesc:a6a7f4c453e083ba56a64018f2f37a405"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the alignment in zero LSBs needed for the used ring. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pro-methods" class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a7ae2647d7163653bb5a250936f917a50" id="r_a7ae2647d7163653bb5a250936f917a50"><td class="memItemLeft" align="right" valign="top"><a id="a7ae2647d7163653bb5a250936f917a50" name="a7ae2647d7163653bb5a250936f917a50"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Virtqueue</b> ()=default</td></tr>
<tr class="memdesc:a7ae2647d7163653bb5a250936f917a50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a disabled virtqueue. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pro-attribs" class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ab2dc5f70a0c42fa15e91cd8084d29cd0" id="r_ab2dc5f70a0c42fa15e91cd8084d29cd0"><td class="memItemLeft" align="right" valign="top"><a id="ab2dc5f70a0c42fa15e91cd8084d29cd0" name="ab2dc5f70a0c42fa15e91cd8084d29cd0"></a>
<a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>_desc</b> = nullptr</td></tr>
<tr class="memdesc:ab2dc5f70a0c42fa15e91cd8084d29cd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">pointer to descriptor table, NULL if queue is off. <br /></td></tr>
<tr class="memitem:ad569bf985c1849caadd7fd7c15d75cec" id="r_ad569bf985c1849caadd7fd7c15d75cec"><td class="memItemLeft" align="right" valign="top"><a id="ad569bf985c1849caadd7fd7c15d75cec" name="ad569bf985c1849caadd7fd7c15d75cec"></a>
<a class="el" href="classL4virtio_1_1Virtqueue_1_1Avail.html">Avail</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>_avail</b> = nullptr</td></tr>
<tr class="memdesc:ad569bf985c1849caadd7fd7c15d75cec"><td class="mdescLeft">&#160;</td><td class="mdescRight">pointer to available ring. <br /></td></tr>
<tr class="memitem:a287fe9fe8bef92049b4f0163ed39c405" id="r_a287fe9fe8bef92049b4f0163ed39c405"><td class="memItemLeft" align="right" valign="top"><a id="a287fe9fe8bef92049b4f0163ed39c405" name="a287fe9fe8bef92049b4f0163ed39c405"></a>
<a class="el" href="classL4virtio_1_1Virtqueue_1_1Used.html">Used</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>_used</b> = nullptr</td></tr>
<tr class="memdesc:a287fe9fe8bef92049b4f0163ed39c405"><td class="mdescLeft">&#160;</td><td class="mdescRight">pointer to used ring. <br /></td></tr>
<tr class="memitem:af4c017e70aa977b3d8f7a024ee3473f3" id="r_af4c017e70aa977b3d8f7a024ee3473f3"><td class="memItemLeft" align="right" valign="top"><a id="af4c017e70aa977b3d8f7a024ee3473f3" name="af4c017e70aa977b3d8f7a024ee3473f3"></a>
<a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>_current_avail</b> = 0</td></tr>
<tr class="memdesc:af4c017e70aa977b3d8f7a024ee3473f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The life counter for the queue. <br /></td></tr>
<tr class="memitem:aa4730e5b53806a3d72164e917c20e91a" id="r_aa4730e5b53806a3d72164e917c20e91a"><td class="memItemLeft" align="right" valign="top"><a id="aa4730e5b53806a3d72164e917c20e91a" name="aa4730e5b53806a3d72164e917c20e91a"></a>
<a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>_idx_mask</b> = 0</td></tr>
<tr class="memdesc:aa4730e5b53806a3d72164e917c20e91a"><td class="mdescLeft">&#160;</td><td class="mdescRight">mask used for indexing into the descriptor table and the rings. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Low-level <a class="el" href="classL4virtio_1_1Virtqueue.html" title="Low-level Virtqueue.">Virtqueue</a>. </p>
<p>This class represents a single virtqueue, with a local running available index.</p>
<dl class="section note"><dt>Note</dt><dd>The <a class="el" href="classL4virtio_1_1Virtqueue.html" title="Low-level Virtqueue.">Virtqueue</a> implementation is not thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00080">80</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a2d23419189e2531f604a5700460794e4" name="a2d23419189e2531f604a5700460794e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d23419189e2531f604a5700460794e4">&#9670;&#160;</a></span>avail_align()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::avail_align </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the alignment in zero LSBs needed for the available ring. </p>
<dl class="section return"><dt>Returns</dt><dd>The alignment in zero LSBs needed for an available ring. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00287">287</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
</div>
</div>
<a id="a962767a117dad07184f59191d399f9ce" name="a962767a117dad07184f59191d399f9ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a962767a117dad07184f59191d399f9ce">&#9670;&#160;</a></span>avail_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::avail_size </td>
<td>(</td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>num</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the size of the available ring for <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>The number of entries in the available ring. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes needed for an available ring with <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00279">279</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00404">num()</a>.</p>
<p class="reference">Referenced by <a class="el" href="server_2l4virtio_source.html#l01047">L4virtio::Svr::Device_t&lt; No_custom_data &gt;::setup_queue()</a>, <a class="el" href="virtqueue_source.html#l00378">setup_simple()</a>, and <a class="el" href="virtqueue_source.html#l00245">total_size()</a>.</p>
<div id="dynsection-2" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a962767a117dad07184f59191d399f9ce_cgraph.svg" width="380" height="51"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-3" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a962767a117dad07184f59191d399f9ce_icgraph.svg" width="626" height="407"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a748641c2fbc97de84af1325718d79c91" name="a748641c2fbc97de84af1325718d79c91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a748641c2fbc97de84af1325718d79c91">&#9670;&#160;</a></span>desc_align()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::desc_align </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the alignment in zero LSBs needed for the descriptor table. </p>
<dl class="section return"><dt>Returns</dt><dd>The alignment in zero LSBs needed for a descriptor table. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00269">269</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
</div>
</div>
<a id="a19410c09db5499023cb4b9f11742cd26" name="a19410c09db5499023cb4b9f11742cd26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19410c09db5499023cb4b9f11742cd26">&#9670;&#160;</a></span>desc_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::desc_size </td>
<td>(</td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>num</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the size of the descriptor table for <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>The number of entries in the descriptor table.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes needed for a descriptor table with <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00261">261</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00404">num()</a>.</p>
<p class="reference">Referenced by <a class="el" href="server_2l4virtio_source.html#l01047">L4virtio::Svr::Device_t&lt; No_custom_data &gt;::setup_queue()</a>, <a class="el" href="virtqueue_source.html#l00378">setup_simple()</a>, and <a class="el" href="virtqueue_source.html#l00245">total_size()</a>.</p>
<div id="dynsection-4" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a19410c09db5499023cb4b9f11742cd26_cgraph.svg" width="380" height="51"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-5" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a19410c09db5499023cb4b9f11742cd26_icgraph.svg" width="626" height="407"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a031d371276beec1cb5cf550be6fac491" name="a031d371276beec1cb5cf550be6fac491"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a031d371276beec1cb5cf550be6fac491">&#9670;&#160;</a></span>disable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void L4virtio::Virtqueue::disable </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Completely disable the queue. </p>
<p><a class="el" href="#a109ea5677dd074df1d2c6a06056c7d82" title="Enable this queue.">setup()</a> must be used to enable the queue again. </p>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00224">224</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">_desc</a>.</p>
<p class="reference">Referenced by <a class="el" href="server_2l4virtio_source.html#l01047">L4virtio::Svr::Device_t&lt; No_custom_data &gt;::setup_queue()</a>.</p>
<div id="dynsection-6" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a031d371276beec1cb5cf550be6fac491_icgraph.svg" width="626" height="307"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a3abd68687a8a7d957e9b765433a313ed" name="a3abd68687a8a7d957e9b765433a313ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3abd68687a8a7d957e9b765433a313ed">&#9670;&#160;</a></span>dump()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void L4virtio::Virtqueue::dump </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> const *</td> <td class="paramname"><span class="paramname"><em>d</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump descriptors for this queue. </p>
<dl class="section pre"><dt>Precondition</dt><dd>the queue must be in working state. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00392">392</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">_desc</a>, and <a class="el" href="virtqueue_source.html#l00116">L4virtio::Virtqueue::Desc::dump()</a>.</p>
<div id="dynsection-7" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-7-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-7-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a3abd68687a8a7d957e9b765433a313ed_cgraph.svg" width="344" height="51"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="abc1894fea1ed246b57027323f611de9d" name="abc1894fea1ed246b57027323f611de9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc1894fea1ed246b57027323f611de9d">&#9670;&#160;</a></span>get_avail_idx()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a> L4virtio::Virtqueue::get_avail_idx </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get available index from available ring (for debugging). </p>
<dl class="section pre"><dt>Precondition</dt><dd>Queue must be in a working state.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>current index in the available ring (shared between device model and device driver). </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00449">449</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00198">_avail</a>.</p>
</div>
</div>
<a id="a1b548bdf762ff26ca411c20763377986" name="a1b548bdf762ff26ca411c20763377986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b548bdf762ff26ca411c20763377986">&#9670;&#160;</a></span>get_tail_avail_idx()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a> L4virtio::Virtqueue::get_tail_avail_idx </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get tail-available index stored in local state (for debugging). </p>
<dl class="section return"><dt>Returns</dt><dd>current tail index for the the available ring. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00456">456</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00202">_current_avail</a>.</p>
</div>
</div>
<a id="a2aa2efa2e5f6ee73423ec9beab40232a" name="a2aa2efa2e5f6ee73423ec9beab40232a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2aa2efa2e5f6ee73423ec9beab40232a">&#9670;&#160;</a></span>no_notify_guest()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool L4virtio::Virtqueue::no_notify_guest </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the no IRQ flag of this queue. </p>
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>true if the guest does not want to get IRQs (currently). </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00414">414</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00198">_avail</a>.</p>
<p class="reference">Referenced by <a class="el" href="server_2virtio-block_source.html#l00483">L4virtio::Svr::Block_dev_base&lt; Ds_data &gt;::finalize_request()</a>, and <a class="el" href="virtio-console-device_source.html#l00202">L4virtio::Svr::Console::Device::notify_queue()</a>.</p>
<div id="dynsection-8" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-8-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-8-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a2aa2efa2e5f6ee73423ec9beab40232a_icgraph.svg" width="404" height="115"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="ad478e575bf6023866e8bd4ea6b5b0200" name="ad478e575bf6023866e8bd4ea6b5b0200"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad478e575bf6023866e8bd4ea6b5b0200">&#9670;&#160;</a></span>no_notify_host() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool L4virtio::Virtqueue::no_notify_host </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the no notify flag of this queue. </p>
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>true if the host does not want to get IRQs (currently). </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00426">426</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00199">_used</a>.</p>
</div>
</div>
<a id="a019fa2078eaca937bd0685b79728f986" name="a019fa2078eaca937bd0685b79728f986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a019fa2078eaca937bd0685b79728f986">&#9670;&#160;</a></span>no_notify_host() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void L4virtio::Virtqueue::no_notify_host </td>
<td>(</td>
<td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>value</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the no-notify flag for this queue. </p>
<dl class="section pre"><dt>Precondition</dt><dd>Queue must be in a working state. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00436">436</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00199">_used</a>.</p>
</div>
</div>
<a id="af61e3e4e436b93f37f22243a1c0ffe0e" name="af61e3e4e436b93f37f22243a1c0ffe0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af61e3e4e436b93f37f22243a1c0ffe0e">&#9670;&#160;</a></span>num()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned L4virtio::Virtqueue::num </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of entries in the ring. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00404">404</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00208">_idx_mask</a>.</p>
<p class="reference">Referenced by <a class="el" href="virtqueue_source.html#l00279">avail_size()</a>, <a class="el" href="virtqueue_source.html#l00261">desc_size()</a>, <a class="el" href="virtqueue_source.html#l00537">L4virtio::Driver::Virtqueue::init_queue()</a>, <a class="el" href="virtqueue_source.html#l00522">L4virtio::Driver::Virtqueue::init_queue()</a>, <a class="el" href="virtqueue_source.html#l00494">L4virtio::Driver::Virtqueue::initialize_rings()</a>, <a class="el" href="virtqueue_source.html#l00349">setup()</a>, <a class="el" href="virtqueue_source.html#l00378">setup_simple()</a>, <a class="el" href="virtio_source.html#l00501">L4virtio::Svr::Request_processor::start()</a>, <a class="el" href="virtqueue_source.html#l00314">total_size()</a>, <a class="el" href="virtqueue_source.html#l00245">total_size()</a>, and <a class="el" href="virtqueue_source.html#l00298">used_size()</a>.</p>
<div id="dynsection-9" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-9-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-9-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_af61e3e4e436b93f37f22243a1c0ffe0e_icgraph.svg" width="926" height="1032"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="aa242e930433e8705c4ee00afaf58f686" name="aa242e930433e8705c4ee00afaf58f686"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa242e930433e8705c4ee00afaf58f686">&#9670;&#160;</a></span>ready()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool L4virtio::Virtqueue::ready </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if this queue is in working state. </p>
<dl class="section return"><dt>Returns</dt><dd>true when the queue is in working state, false else. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00400">400</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">_desc</a>, and <a class="el" href="compiler_8h_source.html#l00283">L4_LIKELY</a>.</p>
<p class="reference">Referenced by <a class="el" href="virtio_source.html#l00273">L4virtio::Svr::Virtqueue::disable_notify()</a>, <a class="el" href="request__l4virtio_8h_source.html#l00172">Virtio_net_request::drop_requests()</a>, <a class="el" href="virtio_source.html#l00284">L4virtio::Svr::Virtqueue::enable_notify()</a>, <a class="el" href="request__l4virtio_8h_source.html#l00199">Virtio_net_request::get_request()</a>, <a class="el" href="virtio-console_source.html#l00536">L4virtio::Svr::Console::Virtio_con::handle_control_message()</a>, and <a class="el" href="virtio-console_source.html#l00487">L4virtio::Svr::Console::Virtio_con::send_control_message()</a>.</p>
<div id="dynsection-10" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-10-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-10-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_aa242e930433e8705c4ee00afaf58f686_icgraph.svg" width="622" height="402"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a109ea5677dd074df1d2c6a06056c7d82" name="a109ea5677dd074df1d2c6a06056c7d82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a109ea5677dd074df1d2c6a06056c7d82">&#9670;&#160;</a></span>setup()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void L4virtio::Virtqueue::setup </td>
<td>(</td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>num</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>desc</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>avail</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>used</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enable this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>The number of entries in the descriptor table, the available ring, and the used ring (must be a power of 2). </td></tr>
<tr><td class="paramname">desc</td><td>The address of the descriptor table. (Must be Desc_align aligned and at least <span class="tt">desc_size(num)</span> bytes in size.) </td></tr>
<tr><td class="paramname">avail</td><td>The address of the available ring. (Must be Avail_align aligned and at least <span class="tt">avail_size(num)</span> bytes in size.) </td></tr>
<tr><td class="paramname">used</td><td>The address of the used ring. (Must be Used_align aligned and at least <span class="tt">used_size(num)</span> bytes in size.)</td></tr>
</table>
</dd>
</dl>
<p>Due to the data type of the descriptors, the queue can have a maximum size of 2^16. </p>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00349">349</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00198">_avail</a>, <a class="el" href="virtqueue_source.html#l00202">_current_avail</a>, <a class="el" href="virtqueue_source.html#l00197">_desc</a>, <a class="el" href="virtqueue_source.html#l00208">_idx_mask</a>, <a class="el" href="virtqueue_source.html#l00199">_used</a>, <a class="el" href="err_8h_source.html#l00046">L4_EINVAL</a>, and <a class="el" href="virtqueue_source.html#l00404">num()</a>.</p>
<p class="reference">Referenced by <a class="el" href="virtqueue_source.html#l00522">L4virtio::Driver::Virtqueue::init_queue()</a>, <a class="el" href="server_2l4virtio_source.html#l01047">L4virtio::Svr::Device_t&lt; No_custom_data &gt;::setup_queue()</a>, and <a class="el" href="virtqueue_source.html#l00378">setup_simple()</a>.</p>
<div id="dynsection-11" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-11-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-11-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a109ea5677dd074df1d2c6a06056c7d82_cgraph.svg" width="380" height="51"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-12" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-12-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-12-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a109ea5677dd074df1d2c6a06056c7d82_icgraph.svg" width="643" height="371"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a437c0ed2eb83201cc69c41d011503036" name="a437c0ed2eb83201cc69c41d011503036"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a437c0ed2eb83201cc69c41d011503036">&#9670;&#160;</a></span>setup_simple()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void L4virtio::Virtqueue::setup_simple </td>
<td>(</td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>num</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>ring</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enable this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>The number of entries in the descriptor table, the available ring, and the used ring (must be a power of 2). </td></tr>
<tr><td class="paramname">ring</td><td>The base address for the queue data structure. The memory block at <span class="tt">ring</span> must be at least <span class="tt">total_size(num)</span> bytes in size and have an alignment of Desc_align (<a class="el" href="#a748641c2fbc97de84af1325718d79c91" title="Get the alignment in zero LSBs needed for the descriptor table.">desc_align()</a>) bits.</td></tr>
</table>
</dd>
</dl>
<p>Due to the data type of the descriptors, the queue can have a maximum size of 2^16. </p>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00378">378</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00279">avail_size()</a>, <a class="el" href="virtqueue_source.html#l00261">desc_size()</a>, <a class="el" href="l4_2sys_2consts_8h_source.html#l00484">l4_round_size()</a>, <a class="el" href="virtqueue_source.html#l00404">num()</a>, and <a class="el" href="virtqueue_source.html#l00349">setup()</a>.</p>
<p class="reference">Referenced by <a class="el" href="virtqueue_source.html#l00537">L4virtio::Driver::Virtqueue::init_queue()</a>.</p>
<div id="dynsection-13" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-13-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-13-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a437c0ed2eb83201cc69c41d011503036_cgraph.svg" width="571" height="280"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-14" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-14-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-14-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a437c0ed2eb83201cc69c41d011503036_icgraph.svg" width="392" height="51"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a96dfd139f3a022e9e2328e28716acdc9" name="a96dfd139f3a022e9e2328e28716acdc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96dfd139f3a022e9e2328e28716acdc9">&#9670;&#160;</a></span>total_size() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::total_size </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the total size of this virtqueue. </p>
<dl class="section pre"><dt>Precondition</dt><dd>The queue has been set up. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00314">314</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">_desc</a>, <a class="el" href="virtqueue_source.html#l00199">_used</a>, <a class="el" href="virtqueue_source.html#l00404">num()</a>, and <a class="el" href="virtqueue_source.html#l00298">used_size()</a>.</p>
<div id="dynsection-15" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-15-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-15-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a96dfd139f3a022e9e2328e28716acdc9_cgraph.svg" width="571" height="79"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a6f8cdc52ebe6322c3023e05e0e055293" name="a6f8cdc52ebe6322c3023e05e0e055293"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f8cdc52ebe6322c3023e05e0e055293">&#9670;&#160;</a></span>total_size() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::total_size </td>
<td>(</td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>num</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the total size for a virtqueue of the given dimensions. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>The number of entries in the descriptor table, the available ring, and the used ring (must be a power of 2).</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The total size in bytes of the queue data structures. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00245">245</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00279">avail_size()</a>, <a class="el" href="virtqueue_source.html#l00261">desc_size()</a>, <a class="el" href="l4_2sys_2consts_8h_source.html#l00484">l4_round_size()</a>, <a class="el" href="virtqueue_source.html#l00404">num()</a>, and <a class="el" href="virtqueue_source.html#l00298">used_size()</a>.</p>
<div id="dynsection-16" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-16-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-16-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a6f8cdc52ebe6322c3023e05e0e055293_cgraph.svg" width="571" height="280"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a6a7f4c453e083ba56a64018f2f37a405" name="a6a7f4c453e083ba56a64018f2f37a405"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a7f4c453e083ba56a64018f2f37a405">&#9670;&#160;</a></span>used_align()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::used_align </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the alignment in zero LSBs needed for the used ring. </p>
<dl class="section return"><dt>Returns</dt><dd>The alignment in zero LSBs needed for an used ring. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00306">306</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
</div>
</div>
<a id="a7747ac81d7fd21e1e55e43c2e7ead2ea" name="a7747ac81d7fd21e1e55e43c2e7ead2ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7747ac81d7fd21e1e55e43c2e7ead2ea">&#9670;&#160;</a></span>used_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long L4virtio::Virtqueue::used_size </td>
<td>(</td>
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>num</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the size of the used ring for <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>The number of entries in the used ring.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size in bytes needed for an used ring with <span class="tt"><a class="el" href="#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. </dd></dl>
<p class="definition">Definition at line <a class="el" href="virtqueue_source.html#l00298">298</a> of file <a class="el" href="virtqueue_source.html">virtqueue</a>.</p>
<p class="reference">References <a class="el" href="virtqueue_source.html#l00404">num()</a>.</p>
<p class="reference">Referenced by <a class="el" href="server_2l4virtio_source.html#l01047">L4virtio::Svr::Device_t&lt; No_custom_data &gt;::setup_queue()</a>, <a class="el" href="virtqueue_source.html#l00314">total_size()</a>, and <a class="el" href="virtqueue_source.html#l00245">total_size()</a>.</p>
<div id="dynsection-17" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-17-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-17-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a7747ac81d7fd21e1e55e43c2e7ead2ea_cgraph.svg" width="380" height="51"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-18" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-18-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-18-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4virtio_1_1Virtqueue_a7747ac81d7fd21e1e55e43c2e7ead2ea_icgraph.svg" width="626" height="315"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>l4/l4virtio/<a class="el" href="virtqueue_source.html">virtqueue</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- HTML footer for doxygen 1.9.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="namespaceL4virtio.html">L4virtio</a></li><li class="navelem"><a href="classL4virtio_1_1Virtqueue.html">Virtqueue</a></li>
<li class="footer">Generated on <span class="timestamp"></span> for L4Re Operating System Framework by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.15.0 </li>
</ul>
</div>
</body>
</html>