Loading...
Searching...
No Matches
L4virtio::Svr::Virtio_gpio< Request_handler, Epiface > Class Template Reference

A server implementation of the virtio-gpio protocol. More...

`#include <virtio-gpio-device>`

Inheritance diagram for L4virtio::Svr::Virtio_gpio< Request_handler, Epiface >:
Collaboration diagram for L4virtio::Svr::Virtio_gpio< Request_handler, Epiface >:

## Data Structures

struct | Irq_handler
| Handler for an gpio pin irq. More...
struct | Host_irq
| Handler for the host irq. More...
struct | Request_processor
| Generic handler for the Virtio requests. More...

## Public Member Functions

void | reset () override
| reset callback, called for doing a device reset
bool | check_queues () override
| callback for checking if the queues at DRIVER_OK transition
int | reconfig_queue (unsigned idx) override
| callback for client queue-config request
void | trigger_driver_config_irq () override
| callback for triggering configuration change notification IRQ
L4::Cap< L4::Irq > | device_notify_irq () const override
| callback to gather the device notification IRQ (old-style)
void | register_single_driver_irq () override
| callback for registering a single guest IRQ for all queues (old-style)
Public Member Functions inherited from L4virtio::Svr::Device_t< No_custom_data >
virtual bool | check_features ()
| callback for checking the subset of accepted features
virtual void | cfg_changed (unsigned)
| callback for client device configuration changes
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.
Public Member Functions inherited from L4::Epiface_t0< L4virtio::Device, L4::Epiface >
Type_info::Demand | get_buffer_demand () const
| Get the server-side buffer demand based in IFACE.
Cap< L4virtio::Device > | obj_cap () const
| Get the (typed) capability to this object.
Public Member Functions inherited from L4::Epiface
| 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

Public Types inherited from L4::Epiface_t0< L4virtio::Device, L4::Epiface >
typedef L4virtio::Device | Interface
| Data type of the IPC interface definition.
Public Types inherited from L4::Epiface
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.
Protected Attributes inherited from L4virtio::Svr::Device_t< No_custom_data >
Mem_list | _mem_info
| Memory region list.

## Detailed Description

template<typename Request_handler, typename Epiface = L4virtio::Device>
class L4virtio::Svr::Virtio_gpio< Request_handler, Epiface >

A server implementation of the virtio-gpio protocol.

Template Parameters

  Request_handler

  The type that is used to handle incomming requests. Needs to have:
  - bool get_direction(l4_uint16_t gpio, l4_uint8_t *dir)
  - bool set_direction(l4_uint16_t gpio, l4_uint8_t dir)
  - bool get_value(l4_uint16_t gpio, l4_uint8_t *val)
  - bool set_value(l4_uint16_t gpio, l4_uint8_t val)
  - bool set_irq_type(l4_uint16_t gpio, l4_uint8_t mode)
  - bool enable_irq(l4_uint16_t gpio, std::shared_ptr<Virtio_gpio::Irq_handler> const &hdl) functions.

  Epiface | The Epiface to derive from. Defaults to L4virtio::Device.

Definition at line 142 of file virtio-gpio-device.

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

- l4/l4virtio/server/virtio-gpio-device