如何解决如何在macOS Kext中使用DMA?
我一直在做一个kext来访问PCI BAR内存上的数据。目前,我能够映射数据并访问它,但是速度非常慢。我想使用DMA来提高与设备通信的速度,但是我一直找不到很多好的例子。我正在查看此页面(https://opensource.apple.com/source/IOPCIFamily/IOPCIFamily-106/AppleSamplePCI/AppleSamplePCI.cpp.auto.html),但是不确定该显示什么:“如果我们有DMA控制器,请在此处启动DMA。”是否有人愿意分享任何良好的资源?
解决方法
您在这里问的内容还不清楚。 DMA通常以特定于设备的方式触发。因此,您可以对BAR(mapDeviceMemoryWithRegister()
和朋友)进行内存映射;该“内存”将与设备寄存器相对应,您通常会在这些设备寄存器上进行位撞击以使设备执行某些操作,包括执行DMA传输。这些寄存器的布局和语义完全取决于设备。
顺便说一句,您的问题用kernel-extension
标签标记,但是我应该指出,现在不赞成使用PCI驱动程序内核扩展,并且可以使用DriverKit编写PCI驱动程序。 (尽管不一定所有类型的PCI设备驱动程序,但现在大多数可以在用户空间中完成。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。