编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

执行第三方 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 的插槽中。