Class VirtioDevice

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class VirtioDevice : public Gaia::Dev::Service

Public Functions

VirtioDevice()
virtual void start(Service *provider) override

Starts the service and associates it with the provider.

Parameters:

provider – The provider to associate with

virtual bool match_properties(Properties &props) override
inline virtual const char *class_name() override
inline virtual const char *name() override
void enable()
void setup_queue(VirtQueue &queue, uint16_t index)
void notify_queue(VirtQueue &queue)

Public Members

void *device_cfg

Public Static Functions

static Vm::UniquePtr<Service> create()
static void int_handler(Hal::InterruptFrame *frame, void *arg)

Protected Types

enum class PciCapType

Values:

enumerator COMMON_CFG
enumerator NOTIFY_CFG
enumerator ISR_CFG
enumerator DEVICE_CFG
enumerator PCI_CFG

Protected Functions

void handle_capability(PciCap cap, uint32_t cap_off)

Protected Attributes

PciDevice *device
frg::string<Gaia::Vm::HeapAllocator> name_str = ""
uint16_t device_id
Hal::InterruptEntry int_entry
PciCommonCfg *common_cfg
uintptr_t notify_base
uintptr_t notify_off_multiplier
Vm::UniquePtr<Service> driver
struct PciCap

Public Members

uint8_t cap_vndr
uint8_t cap_next
uint8_t cap_len
uint8_t cfg_type
uint8_t bar
uint8_t padding[3]
uint32_t offset
uint32_t length
struct PciCommonCfg

Public Members

uint32_t device_feature_select
uint32_t device_feature
uint32_t driver_feature_select
uint32_t driver_feature
uint16_t msix_config
uint16_t num_queues
uint8_t device_status
uint8_t config_generation
uint16_t queue_select
uint16_t queue_size
uint16_t queue_msix_vector
uint16_t queue_enable
uint16_t queue_notify_off
uint64_t queue_desc
uint64_t queue_avail
uint64_t queue_used