对于第一方 DMA,驱动程序应执行以下步骤:
分配 DMA 通道。
使用 ddi_dmae_1stparty(9F) 配置通道。
确保 DMA 对象已在内存中锁定。请参见 physio(9F) 或 ddi_umem_lock(9F) 手册页。
为该对象分配 DMA 资源。
对设备的 DMA 引擎进行编程。
启动引擎。
传送完成后,继续执行总线主控器操作。
执行所需的对象同步。
释放 DMA 资源。
取消分配 DMA 通道。