#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...
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 //...
.map_sg = __iommu_map_sg_attrs, .unmap_sg = __iommu_unmap_sg_attrs, .sync_single_for_cpu = __iommu_sync_single_for_cpu, .sync_single_for_device = __iommu_sync_single_for_device, .sync_sg_for_cpu = __iommu_sync_sg_for_cpu, .sync_sg_for_device = __iommu_sync_sg_for_de...
同样的,dma_map_sg()和dma_map_single()的后端实现也都是和硬件特性相关。 api:dma_handle = dma_map_single(dev, addr, size, direction); 提前申请了一块内存,这个地址可以是非dma区域。通过map后,映射到dma区域,意味着实际上是使用了连个区域。内部会sync同步。一般是临时使用后需要进行dma_unmap_page操...
int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs) void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, ...
dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir, struct dma_attrs *attrs) 这四个函数除了传入可选的struct dma_attrs*之外,其他和不带_attrs后缀的函数一样。 struct dma_attrs概述了一组DMA属性。struct dma_attrs详细定义请参见linux/dma-attr...
void (*unmap_sg)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, struct dma_attrs *attrs); void (*sync_single_for_cpu)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir); ...
void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir, unsigned long attrs) The four functions above are just like the counterpart functions without the _attrs suffixes, except that they pass an optional dma_attrs. 除了传递一个可选的 ...
map_sg = __iommu_map_sg_attrs, .unmap_sg = __iommu_unmap_sg_attrs, .sync_single_for_cpu = __iommu_sync_single_for_cpu, .sync_single_for_device = __iommu_sync_single_for_device, .sync_sg_for_cpu = __iommu_sync_sg_for_cpu, .sync_sg_for_device = __iommu_sync_sg_for_...