linux DMA接口
1.两种DMA映射类型 1.1. 一致性DMA映射(Consistent DMA mappings ) 主要用于映射长时间使用的区域。 CPU和DMA controller不需要考虑cache的影响。 这里的consistent实际上是coherent的概念,不能保证consistent,也就是说需要memory barrier来保证memory order。 1.2 流式DMA映射(streaming DMA mapping) 主要用于一次性DMA传输,传输完成后就会释放。 2.指定DMA设备的寻址范围 include/linux/dma-mapping.h 1 // 用于一致性内存映射的映射范围 2 static inline int dma_set_coherent_mask(struct device *dev, u64 mask) 3 // 用于流式内存映射的映射范围 4 static inline int dma_set_mask(struct device *dev, u64 mask); 3.DMA映射接口 3.1一致性DMA接口 分配较大DMA buffer 1 // dev DMA控制器设备 2 // size 要分配的DMA buffer大小 3 // dma_handle 返回DMA buf的物理地址 4 // flag 分配标志 5 // 返回值 DMA