【发布时间】:2018-06-04 19:16:12
【问题描述】:
我设法创建了一个附加到 IOResources 的虚拟 IOPCIDevice,基本上什么都不做。我可以让现有的驱动程序注册并与之匹配。
但是,在 IO 处理方面,我遇到了一些麻烦。 IOPCIDevice 类中描述的函数(例如 configRead、ioRead、configWrite、ioWrite)的 IO 访问可以由我自己的代码处理。但是使用内存映射和 IODMACommand 的驱动程序是问题所在。
我似乎需要管理两件事:IODeviceMemory(在 IOPCIDevice 中描述)和 DMA 传输。
我如何创建一个最终指向内存/RAM 的 IODeviceMemory,以便当驱动程序尝试与 PCI 设备通信时,它最终什么也不做或只是将数据移动到 RAM,因此我的用户空间客户端可以处理这些数据并采取行动作为模拟 PCI 设备?
然后可以将 DMA 命令也定向到我的用户空间客户端,而不会干扰使用 IODMACommand 的现有驱动程序的源代码。
谢谢!
【问题讨论】:
标签: macos emulation iokit pci pci-e