1 int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, 2 int nents, enum dma_data_direction dir, 3 unsigned long attrs) 4 5 void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg, 6 int nents, enum dma_data_direction dir, 7 unsigned long attrs) 8 9 //...
#define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0) #define dma_map_sg(d, s, n, r) dma_map_sg_attrs(d, s, n, r, 0) #define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, 0) #define dma_map_page(d, p, o, s, r)...
dma_addr_tdma_map_single_attrs(structdevice *dev,void*cpu_addr,size_tsize,enumdma_data_direction dir,unsignedlongattrs) voiddma_unmap_single_attrs(structdevice *dev,dma_addr_tdma_addr,size_tsize,enumdma_data_direction dir,unsignedlongattrs) intdma_map_sg_attrs(structdevice *dev,structscatterli...
1intdma_map_sg_attrs(structdevice *dev,structscatterlist *sg,2intnents,enumdma_data_direction dir,3unsignedlongattrs)45voiddma_unmap_sg_attrs(structdevice *dev,structscatterlist *sg,6intnents,enumdma_data_direction dir,7unsignedlongattrs)89//返回map后的dma地址和长度10sg_dma_address(structscatt...
dma_alloc_coherent->dma_alloc_attrs 根据是否direct(有smmu),分别调用dma_direct_alloc 或者ops->alloc (dma_map_ops) 见上。 iommu_dma_alloc //根据参数 非连续物理内存: iommu_dma_alloc_remap __iommu_dma_alloc_pages //此处分配非连续的物理页 ...
我们知道DMA映射有两种方式,一种是一致性映射 dma_alloc_coherent,一种是流式映射 dma_map_single (dma_map_sg可以映射多个dma buffer)。 一致性映射 dma_alloc_coherent dma_alloc_coherent会调用dma_alloc_attrs: static inline void *dma_alloc_attrs(struct device *dev, size_t size, ...
void dma_unmap_single_attrs(struct device *dev, dma_addr_t dma_addr, size_t size, enum dma_data_direction dir, unsigned long attrs) int dma_map_sg_attrs(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir, ...
我们知道DMA映射有两种方式,一种是一致性映射 dma_alloc_coherent,一种是流式映射 dma_map_single(dma_map_sg可以映射多个dma buffer)。 一致性映射 dma_alloc_coherent dma_alloc_coherent会调用dma_alloc_attrs: 代码语言:javascript 复制 staticinlinevoid*dma_alloc_attrs(struct device*dev,size_t size,dma_...
dma_unmap_single_attrs(struct device *dev, dma_addr_t dma_addr, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) int dma_map_sg_attrs(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir, ...
DMA映射接口:包括dma_alloc_coherent、dma_map_single_attrs、dma_map_sg_attrs等函数,用于分配和映射DMA缓冲区。 DMA操作接口:如dma_sync_single_for_cpu、dma_sync_sg_for_device等,用于同步DMA传输以确保数据一致性。 Linux DMA的应用场景 磁盘I/O:提高硬盘数据读写性能。 网络传输:加快网络数据包的处理速度...