我有一个模拟 PCI 设备的用户空间程序。我已经下载了使用 NVMe 标准与 PCI 设备交互的 nvme linux 设备驱动程序。我必须验证我的用户空间程序是否与标准兼容。
nvme.c(Linux 设备驱动程序)包含 nvme_probe() 函数,该函数将在插入设备时调用。由于我没有该设备,所以我想我会将探测功能合并到 nvme_init() 函数中。
现在我在互联网上进行了大量研究以了解如何模拟 PCI 设备,如
安装 PCI 驱动程序而不连接到设备、
在 linux 上模拟PCI 设备等帖子
我不知道如何将填充的 struct pci_dev 返回到中nvme_probe()
的函数调用pci_set_drvdata(pdev, dev);
如果您可以建议一个教程,关于如何使用虚拟设备配置和用户空间程序函数指针的内存地址手动填充 pci_dev 结构,以模拟与 nvme 驱动程序的交互。