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

305 lines
35 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_port 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__port.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_port Class Reference<div class="ingroups"><a class="el" href="group__virtio__net__switch.html">Virtio Net Switch</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>A Port on the Virtio Net Switch.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="port__l4virtio_8h_source.html">port_l4virtio.h</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_port:</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__port__inherit__graph.svg" width="574" height="1819"><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_port:</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__port__coll__graph.svg" width="574" height="1819"><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-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a34c1973209cc3104dce02baab06acd92" id="r_a34c1973209cc3104dce02baab06acd92"><td class="memItemLeft" align="right" valign="top"><a id="a34c1973209cc3104dce02baab06acd92" name="a34c1973209cc3104dce02baab06acd92"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>L4virtio_port</b> (unsigned vq_max, unsigned num_ds, char const *name, <a class="el" href="group__l4__basic__types.html#ga9678dc2e6bf3e4d8ec950162576b0fad">l4_uint8_t</a> const *mac)</td></tr>
<tr class="memdesc:a34c1973209cc3104dce02baab06acd92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Virtio net port object. <br /></td></tr>
<tr class="memitem:a5d242ddd2fcd011f9719a8e2aa2a3504" id="r_a5d242ddd2fcd011f9719a8e2aa2a3504"><td class="memItemLeft" align="right" valign="top"><a id="a5d242ddd2fcd011f9719a8e2aa2a3504" name="a5d242ddd2fcd011f9719a8e2aa2a3504"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>tx_work_pending</b> () const</td></tr>
<tr class="memdesc:a5d242ddd2fcd011f9719a8e2aa2a3504"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether there is any work pending on the transmission queue. <br /></td></tr>
<tr class="memitem:aa92895e5ec3856f0d0ec5488358e11e9" id="r_aa92895e5ec3856f0d0ec5488358e11e9"><td class="memItemLeft" align="right" valign="top"><a id="aa92895e5ec3856f0d0ec5488358e11e9" name="aa92895e5ec3856f0d0ec5488358e11e9"></a>
std::optional&lt; <a class="el" href="classVirtio__net__request.html">Virtio_net_request</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>get_tx_request</b> ()</td></tr>
<tr class="memdesc:aa92895e5ec3856f0d0ec5488358e11e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get one request from the transmission queue. <br /></td></tr>
<tr class="memitem:a07b9f78ead034deb26fa0ea8af5d409d" id="r_a07b9f78ead034deb26fa0ea8af5d409d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a07b9f78ead034deb26fa0ea8af5d409d">drop_requests</a> ()</td></tr>
<tr class="memdesc:a07b9f78ead034deb26fa0ea8af5d409d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Drop all requests pending in the transmission queue. <br /></td></tr>
<tr class="inherit_header pub_methods_classVirtio__net"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classVirtio__net')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classVirtio__net.html">Virtio_net</a></td></tr>
<tr class="memitem:a730c50b6dfa0c0281c7270873ab4b5e5 inherit pub_methods_classVirtio__net" id="r_a730c50b6dfa0c0281c7270873ab4b5e5"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><b>reset</b> () override</td></tr>
<tr class="memdesc:a730c50b6dfa0c0281c7270873ab4b5e5 inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">reset callback, called for doing a device reset <br /></td></tr>
<tr class="memitem:a023fb41c1b08dd9184e979831d7ed77f inherit pub_methods_classVirtio__net" id="r_a023fb41c1b08dd9184e979831d7ed77f"><td class="memItemLeft" align="right" valign="top">
int&#160;</td><td class="memItemRight" valign="bottom"><b>reconfig_queue</b> (unsigned index) override</td></tr>
<tr class="memdesc:a023fb41c1b08dd9184e979831d7ed77f inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">callback for client queue-config request <br /></td></tr>
<tr class="memitem:a38732397afc04ffd1792d22aa0e39f36 inherit pub_methods_classVirtio__net" id="r_a38732397afc04ffd1792d22aa0e39f36"><td class="memItemLeft" align="right" valign="top">
bool&#160;</td><td class="memItemRight" valign="bottom"><b>check_features</b> () override</td></tr>
<tr class="memdesc:a38732397afc04ffd1792d22aa0e39f36 inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">callback for checking the subset of accepted features <br /></td></tr>
<tr class="memitem:a79c39a6fe6436722b983385610ad82af inherit pub_methods_classVirtio__net" id="r_a79c39a6fe6436722b983385610ad82af"><td class="memItemLeft" align="right" valign="top">
bool&#160;</td><td class="memItemRight" valign="bottom"><b>check_queues</b> () override</td></tr>
<tr class="memdesc:a79c39a6fe6436722b983385610ad82af inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether both virtqueues are ready. <br /></td></tr>
<tr class="memitem:a98a1899628af9ca30c61c5284190bb6a inherit pub_methods_classVirtio__net" id="r_a98a1899628af9ca30c61c5284190bb6a"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><b>register_single_driver_irq</b> () override</td></tr>
<tr class="memdesc:a98a1899628af9ca30c61c5284190bb6a inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save the <span class="tt">_kick_guest_irq</span> that the client sent via <span class="tt">device_notification_irq()</span>. <br /></td></tr>
<tr class="memitem:a2769bea3552babadc7ac992a92d49ade inherit pub_methods_classVirtio__net" id="r_a2769bea3552babadc7ac992a92d49ade"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><b>trigger_driver_config_irq</b> () override</td></tr>
<tr class="memdesc:a2769bea3552babadc7ac992a92d49ade inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">callback for triggering configuration change notification IRQ <br /></td></tr>
<tr class="memitem:a7299f359a85088e999392072f052b97f inherit pub_methods_classVirtio__net" id="r_a7299f359a85088e999392072f052b97f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classVirtio__net.html#a7299f359a85088e999392072f052b97f">notify_queue</a> (<a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue.html">L4virtio::Svr::Virtqueue</a> *queue)</td></tr>
<tr class="memdesc:a7299f359a85088e999392072f052b97f inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trigger the <span class="tt">_kick_guest_irq</span> IRQ. <br /></td></tr>
<tr class="memitem:ac16fe09e82e995dc0ddc8ad10a68e29b inherit pub_methods_classVirtio__net" id="r_ac16fe09e82e995dc0ddc8ad10a68e29b"><td class="memItemLeft" align="right" valign="top">
Virtqueue *&#160;</td><td class="memItemRight" valign="bottom"><b>tx_q</b> ()</td></tr>
<tr class="memdesc:ac16fe09e82e995dc0ddc8ad10a68e29b inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Getter for the transmission queue. <br /></td></tr>
<tr class="memitem:aa20fb4e5b2a66257345955a67b020fc5 inherit pub_methods_classVirtio__net" id="r_aa20fb4e5b2a66257345955a67b020fc5"><td class="memItemLeft" align="right" valign="top">
Virtqueue *&#160;</td><td class="memItemRight" valign="bottom"><b>rx_q</b> ()</td></tr>
<tr class="memdesc:aa20fb4e5b2a66257345955a67b020fc5 inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Getter for the receive queue. <br /></td></tr>
<tr class="memitem:a537b0a6cf7aa376dc5eb14202bd6e317 inherit pub_methods_classVirtio__net" id="r_a537b0a6cf7aa376dc5eb14202bd6e317"><td class="memItemLeft" align="right" valign="top">
Virtqueue const *&#160;</td><td class="memItemRight" valign="bottom"><b>tx_q</b> () const</td></tr>
<tr class="memdesc:a537b0a6cf7aa376dc5eb14202bd6e317 inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Getter for the transmission queue. <br /></td></tr>
<tr class="memitem:aa9944ee3c721ccd8b6480dbc4d13f1e4 inherit pub_methods_classVirtio__net" id="r_aa9944ee3c721ccd8b6480dbc4d13f1e4"><td class="memItemLeft" align="right" valign="top">
Virtqueue const *&#160;</td><td class="memItemRight" valign="bottom"><b>rx_q</b> () const</td></tr>
<tr class="memdesc:aa9944ee3c721ccd8b6480dbc4d13f1e4 inherit pub_methods_classVirtio__net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Getter for the receive queue. <br /></td></tr>
<tr class="inherit_header pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4virtio_1_1Svr_1_1Device__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html">L4virtio::Svr::Device_t&lt; No_custom_data &gt;</a></td></tr>
<tr class="memitem:a2c191fe0524b519a6262f557ebf9f2be inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a2c191fe0524b519a6262f557ebf9f2be"><td class="memItemLeft" align="right" valign="top">
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>cfg_changed</b> (unsigned)</td></tr>
<tr class="memdesc:a2c191fe0524b519a6262f557ebf9f2be inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">callback for client device configuration changes <br /></td></tr>
<tr class="memitem:ae96ab79bacd9bb862b0cf2aa4d3d18ac inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_ae96ab79bacd9bb862b0cf2aa4d3d18ac"><td class="memItemLeft" align="right" valign="top">
virtual <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Irq.html">L4::Irq</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>device_notify_irq</b> () const</td></tr>
<tr class="memdesc:ae96ab79bacd9bb862b0cf2aa4d3d18ac inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">callback to gather the device notification IRQ (old-style) <br /></td></tr>
<tr class="memitem:a66d09e200e34ccad61e5843d2b5bb0a0 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a66d09e200e34ccad61e5843d2b5bb0a0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#a66d09e200e34ccad61e5843d2b5bb0a0">register_driver_irq</a> (unsigned idx)</td></tr>
<tr class="memdesc:a66d09e200e34ccad61e5843d2b5bb0a0 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback for registering an notification IRQ (multi IRQ). <br /></td></tr>
<tr class="memitem:ae684a9e7816579ca93e4f3bf6c765999 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_ae684a9e7816579ca93e4f3bf6c765999"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Irq.html">L4::Irq</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#ae684a9e7816579ca93e4f3bf6c765999">device_notify_irq</a> (unsigned idx)</td></tr>
<tr class="memdesc:ae684a9e7816579ca93e4f3bf6c765999 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback to gather the device notification IRQ (multi IRQ). <br /></td></tr>
<tr class="memitem:a9536bf0c6e00b566c78c6abe80a68780 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a9536bf0c6e00b566c78c6abe80a68780"><td class="memItemLeft" align="right" valign="top">
virtual unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>num_events_supported</b> () const</td></tr>
<tr class="memdesc:a9536bf0c6e00b566c78c6abe80a68780 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the highest notification index supported. <br /></td></tr>
<tr class="memitem:a7ce755ee0579fb70926d762ba67bb66f inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a7ce755ee0579fb70926d762ba67bb66f"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>Device_t</b> (<a class="el" href="classL4virtio_1_1Svr_1_1Dev__config.html">Dev_config</a> *dev_config)</td></tr>
<tr class="memdesc:a7ce755ee0579fb70926d762ba67bb66f inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make a device for the given config. <br /></td></tr>
<tr class="memitem:ac35c61db0aec9e96ee18170bf5bb17b4 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_ac35c61db0aec9e96ee18170bf5bb17b4"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4virtio_1_1Svr_1_1Driver__mem__list__t.html">Mem_list</a> const *&#160;</td><td class="memItemRight" valign="bottom"><b>mem_info</b> () const</td></tr>
<tr class="memdesc:ac35c61db0aec9e96ee18170bf5bb17b4 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the memory region list used for this device. <br /></td></tr>
<tr class="memitem:aedbe988112e98750e5409a8c92358dcf inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_aedbe988112e98750e5409a8c92358dcf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#aedbe988112e98750e5409a8c92358dcf">reset_queue_config</a> (unsigned idx, unsigned num_max, bool inc_generation=false)</td></tr>
<tr class="memdesc:aedbe988112e98750e5409a8c92358dcf inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trigger reset for the configuration space for queue <em class="arg">idx</em>. <br /></td></tr>
<tr class="memitem:ac13ae09cfc41fad98bd25c2d76bfac63 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_ac13ae09cfc41fad98bd25c2d76bfac63"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#ac13ae09cfc41fad98bd25c2d76bfac63">init_mem_info</a> (unsigned num)</td></tr>
<tr class="memdesc:ac13ae09cfc41fad98bd25c2d76bfac63 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the memory region list to the given maximum. <br /></td></tr>
<tr class="memitem:a29f780ecb04509d8b72f4a155b073c74 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a29f780ecb04509d8b72f4a155b073c74"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#a29f780ecb04509d8b72f4a155b073c74">device_error</a> ()</td></tr>
<tr class="memdesc:a29f780ecb04509d8b72f4a155b073c74 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transition device into DEVICE_NEEDS_RESET state. <br /></td></tr>
<tr class="memitem:ab906b4cc61026fd815a8056f07bef10e inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_ab906b4cc61026fd815a8056f07bef10e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#ab906b4cc61026fd815a8056f07bef10e">setup_queue</a> (<a class="el" href="classL4virtio_1_1Svr_1_1Virtqueue.html">Virtqueue</a> *q, unsigned qn, unsigned num_max)</td></tr>
<tr class="memdesc:ab906b4cc61026fd815a8056f07bef10e inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/disable the specified queue. <br /></td></tr>
<tr class="memitem:a460f5dc2b32e33a616eb822ffd2f88f0 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a460f5dc2b32e33a616eb822ffd2f88f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#a460f5dc2b32e33a616eb822ffd2f88f0">handle_mem_cmd_write</a> ()</td></tr>
<tr class="memdesc:a460f5dc2b32e33a616eb822ffd2f88f0 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for a value in the <span class="tt">cmd</span> register and handle a write. <br /></td></tr>
<tr class="memitem:ade1572aa45b90682de1e05f08590d7e3 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_ade1572aa45b90682de1e05f08590d7e3"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><b>enable_trusted_ds_validation</b> ()</td></tr>
<tr class="memdesc:ade1572aa45b90682de1e05f08590d7e3 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable trusted dataspace validation. <br /></td></tr>
<tr class="memitem:a38406c5353e2f96de8c667a6d5c5f5f1 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t" id="r_a38406c5353e2f96de8c667a6d5c5f5f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html#a38406c5353e2f96de8c667a6d5c5f5f1">add_trusted_dataspaces</a> (std::shared_ptr&lt; Ds_vector const &gt; ds)</td></tr>
<tr class="memdesc:a38406c5353e2f96de8c667a6d5c5f5f1 inherit pub_methods_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a list of trusted dataspaces that can be used for validation. <br /></td></tr>
<tr class="inherit_header pub_methods_structL4_1_1Epiface__t0"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_structL4_1_1Epiface__t0')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="structL4_1_1Epiface__t0.html">L4::Epiface_t0&lt; L4virtio::Device, L4::Epiface &gt;</a></td></tr>
<tr class="memitem:a180eb2c1be5e27d44d27b5e260a81245 inherit pub_methods_structL4_1_1Epiface__t0" id="r_a180eb2c1be5e27d44d27b5e260a81245"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4_1_1Type__info_1_1Demand.html">Type_info::Demand</a>&#160;</td><td class="memItemRight" valign="bottom"><b>get_buffer_demand</b> () const</td></tr>
<tr class="memdesc:a180eb2c1be5e27d44d27b5e260a81245 inherit pub_methods_structL4_1_1Epiface__t0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the server-side buffer demand based in <em class="arg">IFACE</em>. <br /></td></tr>
<tr class="memitem:a3557bb44ec6dd6d378083748e94f27f5 inherit pub_methods_structL4_1_1Epiface__t0" id="r_a3557bb44ec6dd6d378083748e94f27f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classL4_1_1Cap.html">Cap</a>&lt; <a class="el" href="classL4virtio_1_1Device.html">L4virtio::Device</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Epiface__t0.html#a3557bb44ec6dd6d378083748e94f27f5">obj_cap</a> () const</td></tr>
<tr class="memdesc:a3557bb44ec6dd6d378083748e94f27f5 inherit pub_methods_structL4_1_1Epiface__t0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the (typed) capability to this object. <br /></td></tr>
<tr class="inherit_header pub_methods_structL4_1_1Epiface"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_structL4_1_1Epiface')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="structL4_1_1Epiface.html">L4::Epiface</a></td></tr>
<tr class="memitem:afadfe87d66e639d554b6a4e5af29454d inherit pub_methods_structL4_1_1Epiface" id="r_afadfe87d66e639d554b6a4e5af29454d"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>Epiface</b> ()</td></tr>
<tr class="memdesc:afadfe87d66e639d554b6a4e5af29454d inherit pub_methods_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make a server object. <br /></td></tr>
<tr class="memitem:a92a03ecd44d4e1571697b58701046522 inherit pub_methods_structL4_1_1Epiface" id="r_a92a03ecd44d4e1571697b58701046522"><td class="memItemLeft" align="right" valign="top">
virtual&#160;</td><td class="memItemRight" valign="bottom"><b>~Epiface</b> ()=0</td></tr>
<tr class="memdesc:a92a03ecd44d4e1571697b58701046522 inherit pub_methods_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the object. <br /></td></tr>
<tr class="memitem:a0d454b9446bdf9e317b09574a5155fe0 inherit pub_methods_structL4_1_1Epiface" id="r_a0d454b9446bdf9e317b09574a5155fe0"><td class="memItemLeft" align="right" valign="top">Stored_cap&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Epiface.html#a0d454b9446bdf9e317b09574a5155fe0">obj_cap</a> () const</td></tr>
<tr class="memdesc:a0d454b9446bdf9e317b09574a5155fe0 inherit pub_methods_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capability to the kernel object belonging to this object. <br /></td></tr>
<tr class="memitem:a9605834c855375364504bd0f7ae78273 inherit pub_methods_structL4_1_1Epiface" id="r_a9605834c855375364504bd0f7ae78273"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structL4_1_1Epiface.html#aeec53d54ab6eb8e660679cdda1102fd7">Server_iface</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Epiface.html#a9605834c855375364504bd0f7ae78273">server_iface</a> () const</td></tr>
<tr class="memdesc:a9605834c855375364504bd0f7ae78273 inherit pub_methods_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to server interface at which the object is currently registered. <br /></td></tr>
<tr class="memitem:af47d6b2877fa4a09e04140a6644631aa inherit pub_methods_structL4_1_1Epiface" id="r_af47d6b2877fa4a09e04140a6644631aa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structL4_1_1Epiface.html#af47d6b2877fa4a09e04140a6644631aa">set_server</a> (<a class="el" href="structL4_1_1Epiface.html#aeec53d54ab6eb8e660679cdda1102fd7">Server_iface</a> *srv, <a class="el" href="classL4_1_1Cap.html">Cap</a>&lt; void &gt; cap, bool managed=false)</td></tr>
<tr class="memdesc:af47d6b2877fa4a09e04140a6644631aa inherit pub_methods_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set server registration info for the object. <br /></td></tr>
<tr class="memitem:ab7308b8ad45d0a6341c351797c3d6dbd inherit pub_methods_structL4_1_1Epiface" id="r_ab7308b8ad45d0a6341c351797c3d6dbd"><td class="memItemLeft" align="right" valign="top">
void&#160;</td><td class="memItemRight" valign="bottom"><b>set_obj_cap</b> (<a class="el" href="classL4_1_1Cap.html">Cap</a>&lt; void &gt; const &amp;cap)</td></tr>
<tr class="memdesc:ab7308b8ad45d0a6341c351797c3d6dbd inherit pub_methods_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated server registration function. <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_structL4_1_1Epiface__t0"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_types_structL4_1_1Epiface__t0')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Types inherited from <a class="el" href="structL4_1_1Epiface__t0.html">L4::Epiface_t0&lt; L4virtio::Device, L4::Epiface &gt;</a></td></tr>
<tr class="memitem:aaef79f5617a61cf2601c8020a1751628 inherit pub_types_structL4_1_1Epiface__t0" id="r_aaef79f5617a61cf2601c8020a1751628"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classL4virtio_1_1Device.html">L4virtio::Device</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Interface</b></td></tr>
<tr class="memdesc:aaef79f5617a61cf2601c8020a1751628 inherit pub_types_structL4_1_1Epiface__t0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data type of the IPC interface definition. <br /></td></tr>
<tr class="inherit_header pub_types_structL4_1_1Epiface"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_types_structL4_1_1Epiface')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Types inherited from <a class="el" href="structL4_1_1Epiface.html">L4::Epiface</a></td></tr>
<tr class="memitem:aeec53d54ab6eb8e660679cdda1102fd7 inherit pub_types_structL4_1_1Epiface" id="r_aeec53d54ab6eb8e660679cdda1102fd7"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classL4_1_1Ipc__svr_1_1Server__iface.html">Ipc_svr::Server_iface</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Server_iface</b></td></tr>
<tr class="memdesc:aeec53d54ab6eb8e660679cdda1102fd7 inherit pub_types_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for abstract server interface. <br /></td></tr>
<tr class="memitem:a3b6915f6a99478aa323219cb5441cd24 inherit pub_types_structL4_1_1Epiface" id="r_a3b6915f6a99478aa323219cb5441cd24"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classL4_1_1Ipc__svr_1_1Server__iface.html#a06e47dba2ba71662337758f0cbf37053">Ipc_svr::Server_iface::Demand</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Demand</b></td></tr>
<tr class="memdesc:a3b6915f6a99478aa323219cb5441cd24 inherit pub_types_structL4_1_1Epiface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for server-side receive buffer demand. <br /></td></tr>
<tr class="inherit_header pro_attribs_classL4virtio_1_1Svr_1_1Device__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classL4virtio_1_1Svr_1_1Device__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Attributes inherited from <a class="el" href="classL4virtio_1_1Svr_1_1Device__t.html">L4virtio::Svr::Device_t&lt; No_custom_data &gt;</a></td></tr>
<tr class="memitem:a4ff8b5e4425d1b720b9751fbe501f68d inherit pro_attribs_classL4virtio_1_1Svr_1_1Device__t" id="r_a4ff8b5e4425d1b720b9751fbe501f68d"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4virtio_1_1Svr_1_1Driver__mem__list__t.html">Mem_list</a>&#160;</td><td class="memItemRight" valign="bottom"><b>_mem_info</b></td></tr>
<tr class="memdesc:a4ff8b5e4425d1b720b9751fbe501f68d inherit pro_attribs_classL4virtio_1_1Svr_1_1Device__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory region list. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A Port on the Virtio Net Switch. </p>
<p>A Port object gets created by <span class="tt">Virtio_factory::op_create()</span>. This function actually only instantiates objects of the types <span class="tt">Switch_port</span> and <span class="tt">Monitor_port</span>. The created Port registers itself at the switch's server. Usually, the IPC call for port creation comes from ned. To finalize the setup, the client has to initialize the port during the virtio initialization phase. To do this, the client registers a dataspace for queues and buffers and provides an IRQ to notify the client on incoming network requests. </p>
<p class="definition">Definition at line <a class="el" href="port__l4virtio_8h_source.html#l00036">36</a> of file <a class="el" href="port__l4virtio_8h_source.html">port_l4virtio.h</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="a07b9f78ead034deb26fa0ea8af5d409d" name="a07b9f78ead034deb26fa0ea8af5d409d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07b9f78ead034deb26fa0ea8af5d409d">&#9670;&#160;</a></span>drop_requests()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void L4virtio_port::drop_requests </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>Drop all requests pending in the transmission queue. </p>
<p>This is used for monitor ports, which are not allowed to send packets. </p>
<p class="definition">Definition at line <a class="el" href="port__l4virtio_8h_source.html#l00103">103</a> of file <a class="el" href="port__l4virtio_8h_source.html">port_l4virtio.h</a>.</p>
<p class="reference">References <a class="el" href="request__l4virtio_8h_source.html#l00172">Virtio_net_request::drop_requests()</a>, and <a class="el" href="l4re-snapshot-25_808_80_2src_2l4_2pkg_2virtio-net-switch_2server_2switch_2virtio__net_8h_source.html#l00305">Virtio_net::tx_q()</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__port_a07b9f78ead034deb26fa0ea8af5d409d_cgraph.svg" width="787" height="390"><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>pkg/virtio-net-switch/server/switch/<a class="el" href="port__l4virtio_8h_source.html">port_l4virtio.h</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="classL4virtio__port.html">L4virtio_port</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>