编写设备驱动程序

执行第三方 DMA 传送

对于第三方 DMA,驱动程序应执行以下步骤:

  1. 分配 DMA 通道。

  2. 使用 ddi_dmae_getattr(9F) 检索系统的 DMA 引擎特性。

  3. 在内存中锁定 DMA 对象。请参见 physio(9F)ddi_umem_lock(9F) 手册页。

  4. 为该对象分配 DMA 资源。

  5. 使用 ddi_dmae_prog(9F) 对系统 DMA 引擎进行编程,以执行传送。

  6. 执行所需的对象同步。

  7. 使用 ddi_dmae_stop(9F) 停止 DMA 引擎。

  8. 释放 DMA 资源。

  9. 取消分配 DMA 通道。

某些硬件平台会以特定于总线的方式限制 DMA 功能。驱动程序应使用 ddi_slaveonly(9F) 来确定设备是否位于可以执行 DMA 的插槽中。