755 lines
62 KiB
HTML
755 lines
62 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::Svr::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_1Svr_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::Svr::Virtqueue Class Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue.html" title="Virtqueue implementation for the device.">Virtqueue</a> implementation for the device.
|
|
<a href="#details">More...</a></p>
|
|
|
|
<p><code>#include <<a class="el" href="virtio_source.html">virtio</a>></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::Svr::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_1Svr_1_1Virtqueue__inherit__graph.svg" width="174" 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::Svr::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_1Svr_1_1Virtqueue__coll__graph.svg" width="794" height="1508"><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:Head_5Fdesc" id="r_Head_5Fdesc"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">VIRTIO request, essentially a descriptor from the available ring. <a href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html#details">More...</a><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:aa7e9493f7fe5bfa9ebaa5d80be8179cf" id="r_aa7e9493f7fe5bfa9ebaa5d80be8179cf"><td class="memItemLeft" align="right" valign="top">Request </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa7e9493f7fe5bfa9ebaa5d80be8179cf">next_avail</a> ()</td></tr>
|
|
<tr class="memdesc:aa7e9493f7fe5bfa9ebaa5d80be8179cf"><td class="mdescLeft"> </td><td class="mdescRight">Get the next available descriptor from the available ring. <br /></td></tr>
|
|
<tr class="memitem:af1edfd95bc43193284a4fe54cc260f9c" id="r_af1edfd95bc43193284a4fe54cc260f9c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#af1edfd95bc43193284a4fe54cc260f9c">rewind_avail</a> (<a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a> const &d)</td></tr>
|
|
<tr class="memdesc:af1edfd95bc43193284a4fe54cc260f9c"><td class="mdescLeft"> </td><td class="mdescRight">Return unfinished descriptors to the available ring, i.e. <br /></td></tr>
|
|
<tr class="memitem:a17bf1779983cb1471fd3c0ca68641922" id="r_a17bf1779983cb1471fd3c0ca68641922"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a17bf1779983cb1471fd3c0ca68641922">desc_avail</a> () const</td></tr>
|
|
<tr class="memdesc:a17bf1779983cb1471fd3c0ca68641922"><td class="mdescLeft"> </td><td class="mdescRight">Test for available descriptors. <br /></td></tr>
|
|
<tr class="memitem:af6577deb37b3685815f9ae52760390db" id="r_af6577deb37b3685815f9ae52760390db"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#af6577deb37b3685815f9ae52760390db">consumed</a> (<a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a> const &r, <a class="el" href="group__l4__basic__types.html#gac1d09f3e382e711b776931f10e6e1e5a">l4_uint32_t</a> len=0)</td></tr>
|
|
<tr class="memdesc:af6577deb37b3685815f9ae52760390db"><td class="mdescLeft"> </td><td class="mdescRight">Put the given descriptor into the used ring. <br /></td></tr>
|
|
<tr class="memitem:a57a3a66f78e7f372792ef7f47fde0297" id="r_a57a3a66f78e7f372792ef7f47fde0297"><td class="memTemplParams" colspan="2">template<typename ITER> </td></tr>
|
|
<tr class="memitem:a57a3a66f78e7f372792ef7f47fde0297 template"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a57a3a66f78e7f372792ef7f47fde0297">consumed</a> (ITER const &begin, ITER const &end)</td></tr>
|
|
<tr class="memdesc:a57a3a66f78e7f372792ef7f47fde0297"><td class="mdescLeft"> </td><td class="mdescRight">Put multiple descriptors into the used ring. <br /></td></tr>
|
|
<tr class="memitem:aeba93ed1ee8f9abfe42542187e54cca0" id="r_aeba93ed1ee8f9abfe42542187e54cca0"><td class="memTemplParams" colspan="2">template<typename QUEUE_OBSERVER> </td></tr>
|
|
<tr class="memitem:aeba93ed1ee8f9abfe42542187e54cca0 template"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aeba93ed1ee8f9abfe42542187e54cca0">finish</a> (<a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a> &d, QUEUE_OBSERVER *o, <a class="el" href="group__l4__basic__types.html#gac1d09f3e382e711b776931f10e6e1e5a">l4_uint32_t</a> len=0)</td></tr>
|
|
<tr class="memdesc:aeba93ed1ee8f9abfe42542187e54cca0"><td class="mdescLeft"> </td><td class="mdescRight">Add a descriptor to the used ring, and notify an observer. <br /></td></tr>
|
|
<tr class="memitem:ad7102baa13cc3341a1b559f849f57651" id="r_ad7102baa13cc3341a1b559f849f57651"><td class="memTemplParams" colspan="2">template<typename ITER, typename QUEUE_OBSERVER> </td></tr>
|
|
<tr class="memitem:ad7102baa13cc3341a1b559f849f57651 template"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad7102baa13cc3341a1b559f849f57651">finish</a> (ITER const &begin, ITER const &end, QUEUE_OBSERVER *o)</td></tr>
|
|
<tr class="memdesc:ad7102baa13cc3341a1b559f849f57651"><td class="mdescLeft"> </td><td class="mdescRight">Add a range of descriptors to the used ring, and notify an observer once. <br /></td></tr>
|
|
<tr class="memitem:ae47268978d2deb4f22d1b93662710f9b" id="r_ae47268978d2deb4f22d1b93662710f9b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae47268978d2deb4f22d1b93662710f9b">disable_notify</a> ()</td></tr>
|
|
<tr class="memdesc:ae47268978d2deb4f22d1b93662710f9b"><td class="mdescLeft"> </td><td class="mdescRight">Set the 'no notify' flag for this queue. <br /></td></tr>
|
|
<tr class="memitem:a2bd42bd424a1661a8eca5bad51239522" id="r_a2bd42bd424a1661a8eca5bad51239522"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2bd42bd424a1661a8eca5bad51239522">enable_notify</a> ()</td></tr>
|
|
<tr class="memdesc:a2bd42bd424a1661a8eca5bad51239522"><td class="mdescLeft"> </td><td class="mdescRight">Clear the 'no notify' flag for this queue. <br /></td></tr>
|
|
<tr class="memitem:a9c3e815065cc8cf0c8fe2573c047dbb4" id="r_a9c3e815065cc8cf0c8fe2573c047dbb4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> const * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9c3e815065cc8cf0c8fe2573c047dbb4">desc</a> (unsigned idx) const</td></tr>
|
|
<tr class="memdesc:a9c3e815065cc8cf0c8fe2573c047dbb4"><td class="mdescLeft"> </td><td class="mdescRight">Get a descriptor from the descriptor list. <br /></td></tr>
|
|
<tr class="inherit_header pub_methods_classL4virtio_1_1Virtqueue"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4virtio_1_1Virtqueue')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4virtio_1_1Virtqueue.html">L4virtio::Virtqueue</a></td></tr>
|
|
<tr class="memitem:a031d371276beec1cb5cf550be6fac491 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a031d371276beec1cb5cf550be6fac491"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a031d371276beec1cb5cf550be6fac491">disable</a> ()</td></tr>
|
|
<tr class="memdesc:a031d371276beec1cb5cf550be6fac491 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Completely disable the queue. <br /></td></tr>
|
|
<tr class="memitem:a96dfd139f3a022e9e2328e28716acdc9 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a96dfd139f3a022e9e2328e28716acdc9"><td class="memItemLeft" align="right" valign="top">unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a96dfd139f3a022e9e2328e28716acdc9">total_size</a> () const</td></tr>
|
|
<tr class="memdesc:a96dfd139f3a022e9e2328e28716acdc9 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the total size of this virtqueue. <br /></td></tr>
|
|
<tr class="memitem:a5a4db3f2c9356da05cd5b472ebc2f0e6 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a5a4db3f2c9356da05cd5b472ebc2f0e6"><td class="memItemLeft" align="right" valign="top">
|
|
unsigned long </td><td class="memItemRight" valign="bottom"><b>avail_offset</b> () const</td></tr>
|
|
<tr class="memdesc:a5a4db3f2c9356da05cd5b472ebc2f0e6 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the offset of the available ring from the descriptor table. <br /></td></tr>
|
|
<tr class="memitem:a80c6d7100b025658ad3c05a844e4391b inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a80c6d7100b025658ad3c05a844e4391b"><td class="memItemLeft" align="right" valign="top">
|
|
unsigned long </td><td class="memItemRight" valign="bottom"><b>used_offset</b> () const</td></tr>
|
|
<tr class="memdesc:a80c6d7100b025658ad3c05a844e4391b inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the offset of the used ring from the descriptor table. <br /></td></tr>
|
|
<tr class="memitem:a109ea5677dd074df1d2c6a06056c7d82 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a109ea5677dd074df1d2c6a06056c7d82"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a109ea5677dd074df1d2c6a06056c7d82">setup</a> (unsigned <a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>, void *desc, void *avail, void *used)</td></tr>
|
|
<tr class="memdesc:a109ea5677dd074df1d2c6a06056c7d82 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Enable this queue. <br /></td></tr>
|
|
<tr class="memitem:a437c0ed2eb83201cc69c41d011503036 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a437c0ed2eb83201cc69c41d011503036"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a437c0ed2eb83201cc69c41d011503036">setup_simple</a> (unsigned <a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>, void *ring)</td></tr>
|
|
<tr class="memdesc:a437c0ed2eb83201cc69c41d011503036 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Enable this queue. <br /></td></tr>
|
|
<tr class="memitem:a3abd68687a8a7d957e9b765433a313ed inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a3abd68687a8a7d957e9b765433a313ed"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a3abd68687a8a7d957e9b765433a313ed">dump</a> (<a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> const *d) const</td></tr>
|
|
<tr class="memdesc:a3abd68687a8a7d957e9b765433a313ed inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Dump descriptors for this queue. <br /></td></tr>
|
|
<tr class="memitem:aa242e930433e8705c4ee00afaf58f686 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_aa242e930433e8705c4ee00afaf58f686"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#aa242e930433e8705c4ee00afaf58f686">ready</a> () const</td></tr>
|
|
<tr class="memdesc:aa242e930433e8705c4ee00afaf58f686 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Test if this queue is in working state. <br /></td></tr>
|
|
<tr class="memitem:af61e3e4e436b93f37f22243a1c0ffe0e inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_af61e3e4e436b93f37f22243a1c0ffe0e"><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a> () const</td></tr>
|
|
<tr class="memitem:a2aa2efa2e5f6ee73423ec9beab40232a inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a2aa2efa2e5f6ee73423ec9beab40232a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a2aa2efa2e5f6ee73423ec9beab40232a">no_notify_guest</a> () const</td></tr>
|
|
<tr class="memdesc:a2aa2efa2e5f6ee73423ec9beab40232a inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the no IRQ flag of this queue. <br /></td></tr>
|
|
<tr class="memitem:ad478e575bf6023866e8bd4ea6b5b0200 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_ad478e575bf6023866e8bd4ea6b5b0200"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#ad478e575bf6023866e8bd4ea6b5b0200">no_notify_host</a> () const</td></tr>
|
|
<tr class="memdesc:ad478e575bf6023866e8bd4ea6b5b0200 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the no notify flag of this queue. <br /></td></tr>
|
|
<tr class="memitem:a019fa2078eaca937bd0685b79728f986 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a019fa2078eaca937bd0685b79728f986"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a019fa2078eaca937bd0685b79728f986">no_notify_host</a> (bool value)</td></tr>
|
|
<tr class="memdesc:a019fa2078eaca937bd0685b79728f986 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Set the no-notify flag for this queue. <br /></td></tr>
|
|
<tr class="memitem:abc1894fea1ed246b57027323f611de9d inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_abc1894fea1ed246b57027323f611de9d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#abc1894fea1ed246b57027323f611de9d">get_avail_idx</a> () const</td></tr>
|
|
<tr class="memdesc:abc1894fea1ed246b57027323f611de9d inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get available index from available ring (for debugging). <br /></td></tr>
|
|
<tr class="memitem:a1b548bdf762ff26ca411c20763377986 inherit pub_methods_classL4virtio_1_1Virtqueue" id="r_a1b548bdf762ff26ca411c20763377986"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a1b548bdf762ff26ca411c20763377986">get_tail_avail_idx</a> () const</td></tr>
|
|
<tr class="memdesc:a1b548bdf762ff26ca411c20763377986 inherit pub_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </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-inherited" class="groupheader"><a id="inherited" name="inherited"></a>
|
|
Additional Inherited Members</h2></td></tr>
|
|
<tr class="inherit_header pub_types_classL4virtio_1_1Virtqueue"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_types_classL4virtio_1_1Virtqueue')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Types inherited from <a class="el" href="classL4virtio_1_1Virtqueue.html">L4virtio::Virtqueue</a></td></tr>
|
|
<tr class="memitem:a70b4f24744f0b446a27e8273402757b4 inherit pub_types_classL4virtio_1_1Virtqueue" id="r_a70b4f24744f0b446a27e8273402757b4"><td class="memItemLeft" align="right" valign="top"><a id="a70b4f24744f0b446a27e8273402757b4" name="a70b4f24744f0b446a27e8273402757b4"></a>enum  </td><td class="memItemRight" valign="bottom"></td></tr>
|
|
<tr class="memdesc:a70b4f24744f0b446a27e8273402757b4"><td class="mdescLeft"> </td><td class="mdescRight">Fixed alignment values for different parts of a virtqueue. <br /></td></tr>
|
|
<tr class="inherit_header pub_static_methods_classL4virtio_1_1Virtqueue"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classL4virtio_1_1Virtqueue')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Static Public Member Functions inherited from <a class="el" href="classL4virtio_1_1Virtqueue.html">L4virtio::Virtqueue</a></td></tr>
|
|
<tr class="memitem:a6f8cdc52ebe6322c3023e05e0e055293 inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a6f8cdc52ebe6322c3023e05e0e055293"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a6f8cdc52ebe6322c3023e05e0e055293">total_size</a> (unsigned <a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
|
|
<tr class="memdesc:a6f8cdc52ebe6322c3023e05e0e055293 inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the total size for a virtqueue of the given dimensions. <br /></td></tr>
|
|
<tr class="memitem:a19410c09db5499023cb4b9f11742cd26 inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a19410c09db5499023cb4b9f11742cd26"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a19410c09db5499023cb4b9f11742cd26">desc_size</a> (unsigned <a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
|
|
<tr class="memdesc:a19410c09db5499023cb4b9f11742cd26 inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the size of the descriptor table for <span class="tt"><a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. <br /></td></tr>
|
|
<tr class="memitem:a748641c2fbc97de84af1325718d79c91 inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a748641c2fbc97de84af1325718d79c91"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a748641c2fbc97de84af1325718d79c91">desc_align</a> ()</td></tr>
|
|
<tr class="memdesc:a748641c2fbc97de84af1325718d79c91 inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the alignment in zero LSBs needed for the descriptor table. <br /></td></tr>
|
|
<tr class="memitem:a962767a117dad07184f59191d399f9ce inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a962767a117dad07184f59191d399f9ce"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a962767a117dad07184f59191d399f9ce">avail_size</a> (unsigned <a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
|
|
<tr class="memdesc:a962767a117dad07184f59191d399f9ce inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the size of the available ring for <span class="tt"><a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. <br /></td></tr>
|
|
<tr class="memitem:a2d23419189e2531f604a5700460794e4 inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a2d23419189e2531f604a5700460794e4"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a2d23419189e2531f604a5700460794e4">avail_align</a> ()</td></tr>
|
|
<tr class="memdesc:a2d23419189e2531f604a5700460794e4 inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the alignment in zero LSBs needed for the available ring. <br /></td></tr>
|
|
<tr class="memitem:a7747ac81d7fd21e1e55e43c2e7ead2ea inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a7747ac81d7fd21e1e55e43c2e7ead2ea"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a7747ac81d7fd21e1e55e43c2e7ead2ea">used_size</a> (unsigned <a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a>)</td></tr>
|
|
<tr class="memdesc:a7747ac81d7fd21e1e55e43c2e7ead2ea inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the size of the used ring for <span class="tt"><a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> entries. <br /></td></tr>
|
|
<tr class="memitem:a6a7f4c453e083ba56a64018f2f37a405 inherit pub_static_methods_classL4virtio_1_1Virtqueue" id="r_a6a7f4c453e083ba56a64018f2f37a405"><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Virtqueue.html#a6a7f4c453e083ba56a64018f2f37a405">used_align</a> ()</td></tr>
|
|
<tr class="memdesc:a6a7f4c453e083ba56a64018f2f37a405 inherit pub_static_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Get the alignment in zero LSBs needed for the used ring. <br /></td></tr>
|
|
<tr class="inherit_header pro_methods_classL4virtio_1_1Virtqueue"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4virtio_1_1Virtqueue')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4virtio_1_1Virtqueue.html">L4virtio::Virtqueue</a></td></tr>
|
|
<tr class="memitem:a7ae2647d7163653bb5a250936f917a50 inherit pro_methods_classL4virtio_1_1Virtqueue" id="r_a7ae2647d7163653bb5a250936f917a50"><td class="memItemLeft" align="right" valign="top">
|
|
 </td><td class="memItemRight" valign="bottom"><b>Virtqueue</b> ()=default</td></tr>
|
|
<tr class="memdesc:a7ae2647d7163653bb5a250936f917a50 inherit pro_methods_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">Create a disabled virtqueue. <br /></td></tr>
|
|
<tr class="inherit_header pro_attribs_classL4virtio_1_1Virtqueue"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classL4virtio_1_1Virtqueue')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Attributes inherited from <a class="el" href="classL4virtio_1_1Virtqueue.html">L4virtio::Virtqueue</a></td></tr>
|
|
<tr class="memitem:ab2dc5f70a0c42fa15e91cd8084d29cd0 inherit pro_attribs_classL4virtio_1_1Virtqueue" id="r_ab2dc5f70a0c42fa15e91cd8084d29cd0"><td class="memItemLeft" align="right" valign="top">
|
|
<a class="el" href="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> * </td><td class="memItemRight" valign="bottom"><b>_desc</b> = nullptr</td></tr>
|
|
<tr class="memdesc:ab2dc5f70a0c42fa15e91cd8084d29cd0 inherit pro_attribs_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">pointer to descriptor table, NULL if queue is off. <br /></td></tr>
|
|
<tr class="memitem:ad569bf985c1849caadd7fd7c15d75cec inherit pro_attribs_classL4virtio_1_1Virtqueue" id="r_ad569bf985c1849caadd7fd7c15d75cec"><td class="memItemLeft" align="right" valign="top">
|
|
<a class="el" href="classL4virtio_1_1Virtqueue_1_1Avail.html">Avail</a> * </td><td class="memItemRight" valign="bottom"><b>_avail</b> = nullptr</td></tr>
|
|
<tr class="memdesc:ad569bf985c1849caadd7fd7c15d75cec inherit pro_attribs_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">pointer to available ring. <br /></td></tr>
|
|
<tr class="memitem:a287fe9fe8bef92049b4f0163ed39c405 inherit pro_attribs_classL4virtio_1_1Virtqueue" id="r_a287fe9fe8bef92049b4f0163ed39c405"><td class="memItemLeft" align="right" valign="top">
|
|
<a class="el" href="classL4virtio_1_1Virtqueue_1_1Used.html">Used</a> * </td><td class="memItemRight" valign="bottom"><b>_used</b> = nullptr</td></tr>
|
|
<tr class="memdesc:a287fe9fe8bef92049b4f0163ed39c405 inherit pro_attribs_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">pointer to used ring. <br /></td></tr>
|
|
<tr class="memitem:af4c017e70aa977b3d8f7a024ee3473f3 inherit pro_attribs_classL4virtio_1_1Virtqueue" id="r_af4c017e70aa977b3d8f7a024ee3473f3"><td class="memItemLeft" align="right" valign="top">
|
|
<a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a> </td><td class="memItemRight" valign="bottom"><b>_current_avail</b> = 0</td></tr>
|
|
<tr class="memdesc:af4c017e70aa977b3d8f7a024ee3473f3 inherit pro_attribs_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </td><td class="mdescRight">The life counter for the queue. <br /></td></tr>
|
|
<tr class="memitem:aa4730e5b53806a3d72164e917c20e91a inherit pro_attribs_classL4virtio_1_1Virtqueue" id="r_aa4730e5b53806a3d72164e917c20e91a"><td class="memItemLeft" align="right" valign="top">
|
|
<a class="el" href="group__l4__basic__types.html#gae8d67914f723bf843df6f311ad2619a2">l4_uint16_t</a> </td><td class="memItemRight" valign="bottom"><b>_idx_mask</b> = 0</td></tr>
|
|
<tr class="memdesc:aa4730e5b53806a3d72164e917c20e91a inherit pro_attribs_classL4virtio_1_1Virtqueue"><td class="mdescLeft"> </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><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue.html" title="Virtqueue implementation for the device.">Virtqueue</a> implementation for the device. </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_1Svr_1_1Virtqueue.html" title="Virtqueue implementation for the device.">Virtqueue</a> implementation is not thread-safe. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00087">87</a> of file <a class="el" href="virtio_source.html">virtio</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="af6577deb37b3685815f9ae52760390db" name="af6577deb37b3685815f9ae52760390db"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af6577deb37b3685815f9ae52760390db">◆ </a></span>consumed() <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">void L4virtio::Svr::Virtqueue::consumed </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a> const &</td> <td class="paramname"><span class="paramname"><em>r</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#gac1d09f3e382e711b776931f10e6e1e5a">l4_uint32_t</a></td> <td class="paramname"><span class="paramname"><em>len</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span> )</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>Put the given descriptor into the used ring. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">r</td><td>Request that shall be marked as finished. </td></tr>
|
|
<tr><td class="paramname">len</td><td>The total number of bytes written.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state.</dd>
|
|
<dd>
|
|
<span class="tt">r</span> must be a valid request from this queue. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00190">190</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">L4virtio::Virtqueue::_desc</a>, <a class="el" href="virtqueue_source.html#l00208">L4virtio::Virtqueue::_idx_mask</a>, and <a class="el" href="virtqueue_source.html#l00199">L4virtio::Virtqueue::_used</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="virtio_source.html#l00240">finish()</a>, and <a class="el" href="virtio_source.html#l00262">finish()</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 caller 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_1Svr_1_1Virtqueue_af6577deb37b3685815f9ae52760390db_icgraph.svg" width="868" height="339"><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="a57a3a66f78e7f372792ef7f47fde0297" name="a57a3a66f78e7f372792ef7f47fde0297"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a57a3a66f78e7f372792ef7f47fde0297">◆ </a></span>consumed() <span class="overload">[2/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename ITER> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void L4virtio::Svr::Virtqueue::consumed </td>
|
|
<td>(</td>
|
|
<td class="paramtype">ITER const &</td> <td class="paramname"><span class="paramname"><em>begin</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">ITER const &</td> <td class="paramname"><span class="paramname"><em>end</em></span> )</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>Put multiple descriptors into the used ring. </p>
|
|
<p>A range of descriptors, specified by <span class="tt">begin</span> and <span class="tt">end</span> iterators is added. Each iterator points to a struct that has a <span class="tt">first</span> member that is a <span class="tt"><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html" title="VIRTIO request, essentially a descriptor from the available ring.">Head_desc</a></span> and a <span class="tt">second</span> member that is the corresponding number of bytes written.</p>
|
|
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname">ITER</td><td>The type of the iterator (inferred). </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">begin</td><td>Iterator pointing to first new descriptor. </td></tr>
|
|
<tr><td class="paramname">end</td><td>Iterator pointing to one past last entry.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00213">213</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">L4virtio::Virtqueue::_desc</a>, <a class="el" href="virtqueue_source.html#l00208">L4virtio::Virtqueue::_idx_mask</a>, and <a class="el" href="virtqueue_source.html#l00199">L4virtio::Virtqueue::_used</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a9c3e815065cc8cf0c8fe2573c047dbb4" name="a9c3e815065cc8cf0c8fe2573c047dbb4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9c3e815065cc8cf0c8fe2573c047dbb4">◆ </a></span>desc()</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="classL4virtio_1_1Virtqueue_1_1Desc.html">Desc</a> const * L4virtio::Svr::Virtqueue::desc </td>
|
|
<td>(</td>
|
|
<td class="paramtype">unsigned</td> <td class="paramname"><span class="paramname"><em>idx</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 a descriptor from the descriptor list. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">idx</td><td>The index of the descriptor.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd><span class="tt">idx</span> < <span class="tt"><a class="el" href="classL4virtio_1_1Virtqueue.html#af61e3e4e436b93f37f22243a1c0ffe0e">num</a></span> </dd>
|
|
<dd>
|
|
queue must be in working state </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00298">298</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00197">L4virtio::Virtqueue::_desc</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="virtio_source.html#l00501">L4virtio::Svr::Request_processor::start()</a>.</p>
|
|
<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_1Svr_1_1Virtqueue_a9c3e815065cc8cf0c8fe2573c047dbb4_icgraph.svg" width="859" height="467"><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="a17bf1779983cb1471fd3c0ca68641922" name="a17bf1779983cb1471fd3c0ca68641922"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a17bf1779983cb1471fd3c0ca68641922">◆ </a></span>desc_avail()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool L4virtio::Svr::Virtqueue::desc_avail </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 for available descriptors. </p>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if there are descriptors available, false if not. </dd></dl>
|
|
<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="virtio_source.html#l00175">175</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00198">L4virtio::Virtqueue::_avail</a>, and <a class="el" href="virtqueue_source.html#l00202">L4virtio::Virtqueue::_current_avail</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="request__l4virtio_8h_source.html#l00172">Virtio_net_request::drop_requests()</a>, and <a class="el" href="port__l4virtio_8h_source.html#l00087">L4virtio_port::tx_work_pending()</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 caller 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_1Svr_1_1Virtqueue_a17bf1779983cb1471fd3c0ca68641922_icgraph.svg" width="600" 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="ae47268978d2deb4f22d1b93662710f9b" name="ae47268978d2deb4f22d1b93662710f9b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae47268978d2deb4f22d1b93662710f9b">◆ </a></span>disable_notify()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void L4virtio::Svr::Virtqueue::disable_notify </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>Set the 'no notify' flag for this queue. </p>
|
|
<p>This function may be called on a disabled queue. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00273">273</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00199">L4virtio::Virtqueue::_used</a>, <a class="el" href="compiler_8h_source.html#l00283">L4_LIKELY</a>, and <a class="el" href="virtqueue_source.html#l00400">L4virtio::Virtqueue::ready()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="switch_8cc_source.html#l00194">Virtio_switch::handle_l4virtio_port_tx()</a>.</p>
|
|
<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 call 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_1Svr_1_1Virtqueue_ae47268978d2deb4f22d1b93662710f9b_cgraph.svg" width="372" 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-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_1Svr_1_1Virtqueue_ae47268978d2deb4f22d1b93662710f9b_icgraph.svg" width="388" 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="a2bd42bd424a1661a8eca5bad51239522" name="a2bd42bd424a1661a8eca5bad51239522"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a2bd42bd424a1661a8eca5bad51239522">◆ </a></span>enable_notify()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void L4virtio::Svr::Virtqueue::enable_notify </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>Clear the 'no notify' flag for this queue. </p>
|
|
<p>This function may be called on a disabled queue. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00284">284</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00199">L4virtio::Virtqueue::_used</a>, <a class="el" href="compiler_8h_source.html#l00283">L4_LIKELY</a>, and <a class="el" href="virtqueue_source.html#l00400">L4virtio::Virtqueue::ready()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="switch_8cc_source.html#l00194">Virtio_switch::handle_l4virtio_port_tx()</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_1Svr_1_1Virtqueue_a2bd42bd424a1661a8eca5bad51239522_cgraph.svg" width="372" 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-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_1Svr_1_1Virtqueue_a2bd42bd424a1661a8eca5bad51239522_icgraph.svg" width="388" 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="aeba93ed1ee8f9abfe42542187e54cca0" name="aeba93ed1ee8f9abfe42542187e54cca0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aeba93ed1ee8f9abfe42542187e54cca0">◆ </a></span>finish() <span class="overload">[1/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename QUEUE_OBSERVER> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void L4virtio::Svr::Virtqueue::finish </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a> &</td> <td class="paramname"><span class="paramname"><em>d</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">QUEUE_OBSERVER *</td> <td class="paramname"><span class="paramname"><em>o</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#gac1d09f3e382e711b776931f10e6e1e5a">l4_uint32_t</a></td> <td class="paramname"><span class="paramname"><em>len</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span> )</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>Add a descriptor to the used ring, and notify an observer. </p>
|
|
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname">QUEUE_OBSERVER</td><td>The type of the observer (inferred). </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">d</td><td>descriptor of the request that is to be marked as finished. </td></tr>
|
|
<tr><td class="paramname">o</td><td>Pointer to the observer that is notified. </td></tr>
|
|
<tr><td class="paramname">len</td><td>Number of bytes written for this request.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state.</dd>
|
|
<dd>
|
|
<span class="tt">d</span> must be a valid request from this queue. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00240">240</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtio_source.html#l00190">consumed()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="request__l4virtio_8h_source.html#l00172">Virtio_net_request::drop_requests()</a>, <a class="el" href="virtio-console_source.html#l00536">L4virtio::Svr::Console::Virtio_con::handle_control_message()</a>, <a class="el" href="virtio-console-device_source.html#l00272">L4virtio::Svr::Console::Device::port_read()</a>, <a class="el" href="virtio-console-device_source.html#l00341">L4virtio::Svr::Console::Device::port_write()</a>, and <a class="el" href="virtio-console_source.html#l00487">L4virtio::Svr::Console::Virtio_con::send_control_message()</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 call 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_1Svr_1_1Virtqueue_aeba93ed1ee8f9abfe42542187e54cca0_cgraph.svg" width="400" 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-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_1Svr_1_1Virtqueue_aeba93ed1ee8f9abfe42542187e54cca0_icgraph.svg" width="650" height="339"><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="ad7102baa13cc3341a1b559f849f57651" name="ad7102baa13cc3341a1b559f849f57651"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad7102baa13cc3341a1b559f849f57651">◆ </a></span>finish() <span class="overload">[2/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename ITER, typename QUEUE_OBSERVER> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void L4virtio::Svr::Virtqueue::finish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">ITER const &</td> <td class="paramname"><span class="paramname"><em>begin</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">ITER const &</td> <td class="paramname"><span class="paramname"><em>end</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">QUEUE_OBSERVER *</td> <td class="paramname"><span class="paramname"><em>o</em></span> )</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>Add a range of descriptors to the used ring, and notify an observer once. </p>
|
|
<p>The iterators are passed to <a class="el" href="#a57a3a66f78e7f372792ef7f47fde0297" title="Put multiple descriptors into the used ring.">consumed<ITER>(ITER const &, ITER const &)</a>, and the requirements detailed there apply.</p>
|
|
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname">ITER</td><td>type of the iterator (inferred) </td></tr>
|
|
<tr><td class="paramname">QUEUE_OBSERVER</td><td>the type of the observer (inferred). </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">begin</td><td>iterator pointing to first element. </td></tr>
|
|
<tr><td class="paramname">end</td><td>iterator pointing to one past last element. </td></tr>
|
|
<tr><td class="paramname">o</td><td>pointer to the observer that is notified.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00262">262</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtio_source.html#l00190">consumed()</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_1Svr_1_1Virtqueue_ad7102baa13cc3341a1b559f849f57651_cgraph.svg" width="400" 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="aa7e9493f7fe5bfa9ebaa5d80be8179cf" name="aa7e9493f7fe5bfa9ebaa5d80be8179cf"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa7e9493f7fe5bfa9ebaa5d80be8179cf">◆ </a></span>next_avail()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Request L4virtio::Svr::Virtqueue::next_avail </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>Get the next available descriptor from the available ring. </p>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>The queue must be in working state. </dd></dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>A Request for the next available descriptor, the Request is invalid if there are no descriptors in the available ring. </dd></dl>
|
|
<dl class="section note"><dt>Note</dt><dd>The return value must be checked even when a previous <a class="el" href="#a17bf1779983cb1471fd3c0ca68641922" title="Test for available descriptors.">desc_avail()</a> returned true. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00136">136</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00198">L4virtio::Virtqueue::_avail</a>, <a class="el" href="virtqueue_source.html#l00202">L4virtio::Virtqueue::_current_avail</a>, <a class="el" href="virtqueue_source.html#l00208">L4virtio::Virtqueue::_idx_mask</a>, and <a class="el" href="compiler_8h_source.html#l00283">L4_LIKELY</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="request__l4virtio_8h_source.html#l00172">Virtio_net_request::drop_requests()</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>, <a class="el" href="virtio-console-device_source.html#l00272">L4virtio::Svr::Console::Device::port_read()</a>, <a class="el" href="virtio-console-device_source.html#l00341">L4virtio::Svr::Console::Device::port_write()</a>, and <a class="el" href="virtio-console_source.html#l00487">L4virtio::Svr::Console::Virtio_con::send_control_message()</a>.</p>
|
|
<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_1Svr_1_1Virtqueue_aa7e9493f7fe5bfa9ebaa5d80be8179cf_icgraph.svg" width="650" height="403"><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="af1edfd95bc43193284a4fe54cc260f9c" name="af1edfd95bc43193284a4fe54cc260f9c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af1edfd95bc43193284a4fe54cc260f9c">◆ </a></span>rewind_avail()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void L4virtio::Svr::Virtqueue::rewind_avail </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue_1_1Head__desc.html">Head_desc</a> const &</td> <td class="paramname"><span class="paramname"><em>d</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>Return unfinished descriptors to the available ring, i.e. </p>
|
|
<p>reset the local next index of the available ring to the given descriptor.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">d</td><td>descriptor of the request that is to be marked as finished.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>queue must be in working state.</dd>
|
|
<dd>
|
|
<span class="tt">d</span> must be a valid request from this queue, obtained via <a class="el" href="#aa7e9493f7fe5bfa9ebaa5d80be8179cf" title="Get the next available descriptor from the available ring.">next_avail()</a>, that has not yet been finished, and in addition, no descriptors following it have been finished. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="virtio_source.html#l00160">160</a> of file <a class="el" href="virtio_source.html">virtio</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="virtqueue_source.html#l00202">L4virtio::Virtqueue::_current_avail</a>, <a class="el" href="virtqueue_source.html#l00197">L4virtio::Virtqueue::_desc</a>, and <a class="el" href="virtqueue_source.html#l00208">L4virtio::Virtqueue::_idx_mask</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this class was generated from the following file:<ul>
|
|
<li>l4/l4virtio/server/<a class="el" href="virtio_source.html">virtio</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"><b>Svr</b></li><li class="navelem"><a href="classL4virtio_1_1Svr_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>
|