![]() |
L4Re Operating System Framework
Interface and Usage Documentation
|
A Port on the Virtio Net Switch. More...
#include <port_l4virtio.h>
Public Member Functions | |
L4virtio_port (unsigned vq_max, unsigned num_ds, char const *name, l4_uint8_t const *mac) | |
Create a Virtio net port object. | |
bool | tx_work_pending () const |
Check whether there is any work pending on the transmission queue. | |
std::optional< Virtio_net_request > | get_tx_request () |
Get one request from the transmission queue. | |
void | drop_requests () |
Drop all requests pending in the transmission queue. | |
![]() | |
void | reset () override |
reset callback, called for doing a device reset | |
int | reconfig_queue (unsigned index) override |
callback for client queue-config request | |
bool | check_features () override |
callback for checking the subset of accepted features | |
bool | check_queues () override |
Check whether both virtqueues are ready. | |
void | register_single_driver_irq () override |
Save the _kick_guest_irq that the client sent via device_notification_irq() . | |
void | trigger_driver_config_irq () override |
callback for triggering configuration change notification IRQ | |
void | notify_queue (L4virtio::Svr::Virtqueue *queue) |
Trigger the _kick_guest_irq IRQ. | |
Virtqueue * | tx_q () |
Getter for the transmission queue. | |
Virtqueue * | rx_q () |
Getter for the receive queue. | |
Virtqueue const * | tx_q () const |
Getter for the transmission queue. | |
Virtqueue const * | rx_q () const |
Getter for the receive queue. | |
![]() | |
virtual void | cfg_changed (unsigned) |
callback for client device configuration changes | |
virtual L4::Cap< L4::Irq > | device_notify_irq () const |
callback to gather the device notification IRQ (old-style) | |
virtual void | register_driver_irq (unsigned idx) |
Callback for registering an notification IRQ (multi IRQ). | |
virtual L4::Cap< L4::Irq > | device_notify_irq (unsigned idx) |
Callback to gather the device notification IRQ (multi IRQ). | |
virtual unsigned | num_events_supported () const |
Return the highest notification index supported. | |
Device_t (Dev_config *dev_config) | |
Make a device for the given config. | |
Mem_list const * | mem_info () const |
Get the memory region list used for this device. | |
void | reset_queue_config (unsigned idx, unsigned num_max, bool inc_generation=false) |
Trigger reset for the configuration space for queue idx. | |
void | init_mem_info (unsigned num) |
Initialize the memory region list to the given maximum. | |
void | device_error () |
Transition device into DEVICE_NEEDS_RESET state. | |
bool | setup_queue (Virtqueue *q, unsigned qn, unsigned num_max) |
Enable/disable the specified queue. | |
bool | handle_mem_cmd_write () |
Check for a value in the cmd register and handle a write. | |
void | enable_trusted_ds_validation () |
Enable trusted dataspace validation. | |
void | add_trusted_dataspaces (std::shared_ptr< Ds_vector const > ds) |
Provide a list of trusted dataspaces that can be used for validation. | |
![]() | |
Type_info::Demand | get_buffer_demand () const |
Get the server-side buffer demand based in IFACE. | |
Cap< RPC_IFACE > | obj_cap () const |
Get the (typed) capability to this object. | |
![]() | |
Epiface () | |
Make a server object. | |
virtual | ~Epiface ()=0 |
Destroy the object. | |
Stored_cap | obj_cap () const |
Get the capability to the kernel object belonging to this object. | |
Server_iface * | server_iface () const |
Get pointer to server interface at which the object is currently registered. | |
int | set_server (Server_iface *srv, Cap< void > cap, bool managed=false) |
Set server registration info for the object. | |
void | set_obj_cap (Cap< void > const &cap) |
Deprecated server registration function. | |
Additional Inherited Members | |
![]() | |
typedef RPC_IFACE | Interface |
Data type of the IPC interface definition. | |
![]() | |
typedef Ipc_svr::Server_iface | Server_iface |
Type for abstract server interface. | |
typedef Ipc_svr::Server_iface::Demand | Demand |
Type for server-side receive buffer demand. | |
![]() | |
Mem_list | _mem_info |
Memory region list. | |
A Port on the Virtio Net Switch.
A Port object gets created by Virtio_factory::op_create()
. This function actually only instantiates objects of the types Switch_port
and Monitor_port
. 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.
Definition at line 36 of file port_l4virtio.h.
|
inline |
Drop all requests pending in the transmission queue.
This is used for monitor ports, which are not allowed to send packets.
Definition at line 103 of file port_l4virtio.h.
References Virtio_net_request::drop_requests(), and Virtio_net::tx_q().