1. 概述
后端驱动在qemu中实现,为前端驱动提供IO内存并初始化虚拟设备配置信息,与前端驱动交互,通过虚拟队列(环形缓冲区)、IO内存读写、中断等机制完成设备的访问。
2. 后端驱动初始化
后端驱动的主要作用是为前端驱动提供虚拟设备。后端驱动初始化的过程中,在完成虚拟设备注册的同时,完成虚拟设备配置信息的初始化。
2.1 数据结构
后端驱动相关的数据结构非常复杂,但是数据结构之间的联系与前端驱动中各个模块的数据结构的联系有相似之处,列举出其中重要的数据结构及其核心数据项如下:
//虚拟PCI设备信息
struct {
DeviceState qdev; //虚拟设备状态信息
/* PCI config space */
uint8_t *config;
...
/* the following fields are read only */
PCIBus *bus; //msi相关配置信息
char name[64];
PCIIORegion io_regions[PCI_NUM_REGIONS];
...
qemu_irq *irq;
...
/* MemoryRegion container for msix exclusive BAR setup */
MemoryRegion msix_