Loading...
Searching...
No Matches
L4virtio::Svr::Device_t< DATA > Class Template Referenceabstract

Server-side L4-VIRTIO device stub. More...

`#include <l4virtio>`

Inheritance diagram for L4virtio::Svr::Device_t< DATA >:
Collaboration diagram for L4virtio::Svr::Device_t< DATA >:

## Public Member Functions

virtual void | reset ()=0
| reset callback, called for doing a device reset
virtual bool | check_features ()
| callback for checking the subset of accepted features
virtual bool | check_queues ()=0
| callback for checking if the queues at DRIVER_OK transition
virtual int | reconfig_queue (unsigned idx)=0
| callback for client queue-config request
virtual void | cfg_changed (unsigned)
| callback for client device configuration changes
virtual void | register_single_driver_irq ()
| callback for registering a single guest IRQ for all queues (old-style)
virtual void | trigger_driver_config_irq ()=0
| callback for triggering configuration change notification IRQ
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.

## Protected Attributes

Mem_list | _mem_info
| Memory region list.

## Detailed Description

template<typename DATA>
class L4virtio::Svr::Device_t< DATA >

Server-side L4-VIRTIO device stub.

This stub supports new-style multi-event registration (using get_device_config(), bind() and get_device_notification_irq()).

Definition at line 801 of file l4virtio.

## Member Function Documentation

## add_trusted_dataspaces()

template<typename DATA>

void L4virtio::Svr::Device_t< DATA >::add_trusted_dataspaces | ( | std::shared_ptr< Ds_vector const > | ds | ) |

inline

Provide a list of trusted dataspaces that can be used for validation.

Parameters

  ds | list of trusted dataspaces.

Definition at line 1198 of file l4virtio.

## device_error()

template<typename DATA>

void L4virtio::Svr::Device_t< DATA >::device_error | ( |  | ) |

inline

Transition device into DEVICE_NEEDS_RESET state.

This function does a full reset, sets the DEVICE_NEEDS_RESET bit in the device status register, triggering a guest config IRQ if necessary. The driver still needs to perform its own reset and initialization sequence.

Definition at line 1024 of file l4virtio.

Referenced by Virtio_switch::handle_l4virtio_port_tx().

Here is the caller graph for this function:

## device_notify_irq()

template<typename DATA>

virtual L4::Cap< L4::Irq > L4virtio::Svr::Device_t< DATA >::device_notify_irq | ( | unsigned | idx | ) |

inlinevirtual

Callback to gather the device notification IRQ (multi IRQ).

The default implementation maps to the implementation for single IRQ notification points.

Definition at line 874 of file l4virtio.

## handle_mem_cmd_write()

template<typename DATA>

bool L4virtio::Svr::Device_t< DATA >::handle_mem_cmd_write | ( |  | ) |

inline

Check for a value in the cmd register and handle a write.

This function checks for a value in the cmd register and executes the command if there is any, or returns false if there was no command.

Execution of the command is signaled by a zero in the cmd register.

Definition at line 1154 of file l4virtio.

## init_mem_info()

template<typename DATA>

void L4virtio::Svr::Device_t< DATA >::init_mem_info | ( | unsigned | num | ) |

inline

Initialize the memory region list to the given maximum.

Parameters

  num | Maximum number of memory regions that can be managed.

Definition at line 1012 of file l4virtio.

## register_driver_irq()

template<typename DATA>

virtual void L4virtio::Svr::Device_t< DATA >::register_driver_irq | ( | unsigned | idx | ) |

inlinevirtual

Callback for registering an notification IRQ (multi IRQ).

The default implementation maps to the implementation for single IRQ notification points.

Definition at line 860 of file l4virtio.

## reset_queue_config()

template<typename DATA>

void L4virtio::Svr::Device_t< DATA >::reset_queue_config | ( | unsigned | idx,
|  | unsigned | num_max,
|  | bool | inc_generation = false )

inline

Trigger reset for the configuration space for queue idx.

Parameters

  idx | The queue index to reset.
  num_max | Maximum number of entries in this queue.
  inc_generation | The config generation will be incremented when this is true.

This function resets the driver-readable configuration space for the queue with the given index. The queue configuration is reset to all 0, and the maximum number of entries in the queue is set to num_max.

Definition at line 1002 of file l4virtio.

## setup_queue()

template<typename DATA>

bool L4virtio::Svr::Device_t< DATA >::setup_queue | ( | Virtqueue * | q,
|  | unsigned | qn,
|  | unsigned | num_max )

inline

Enable/disable the specified queue.

Parameters

  q | Pointer to the ring that represents the virtqueue internally.
  qn | Index of the queue.
  num_max | Maximum number of supported entries in this queue.

Returns
  true for success.
  - This function calculates the parameters of the virtqueue from the clients configuration space values, checks the accessibility of the queue data structures and initializes q to ready state when all checks succeeded.

Definition at line 1047 of file l4virtio.

The documentation for this class was generated from the following file:

- l4/l4virtio/server/l4virtio