使用pci_map_single进行多次dma传输

时间:2015-08-12 13:01:42

标签: linux dma

我将通过此链接http://lwn.net/2001/0712/a/dma-interface.php3浏览内核源文档。它提到pci_map_single只能用于单次传输。我正在写一个PCI驱动程序,设备写入每500 us缓冲4KB数据。之后会发出中断。我尝试使用pci_alloc_consistent,但它不断产生错误,说明“相干DMA掩码小于系统GFP_DMA掩码臂”。我的问题是如何将pci_map_single用于多个dma传输。或者使用pci_alloc_coherent的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您的意思是想通过相同的缓冲区进行多次DMA传输,则可以只使用pci_unmap_single,然后再次映射dma。 但是你每次都需要存储dma地址,所以你可以取消映射它。