接前一篇文章:
上回书重点解析了virtio_pci_modern_probe函数。再来回顾一下其中相关的数据结构:
- struct virtio_pci_device
struct virtio_pci_device的定义在Linux内核源码/drivers/virtio/virtio_pci_common.h中,如下:
/* Our device structure */
struct virtio_pci_device {
struct virtio_device vdev;
struct pci_dev *pci_dev;
union {
struct virtio_pci_legacy_device ldev;
struct virtio_pci_modern_device mdev;
};
bool is_legacy;
/* Where to read and clear interrupt */
u8 __iomem *isr;
/* a list of queues so we can dispatch IRQs */
spinlock_t lock;
struct list_head virtqueues;
/* array of all queues for house-keeping */
struct virtio_pci_vq_info **vqs;
/* MSI-X support */
int msix_enabled;
int intx_enabled;
cpumask_va