*参照元 [#w9fadc0a] #backlinks *説明 [#qc1f353d] -パス: 複数あり --CONFIG_HAVE_DMA_ATTRS 有効: [[linux-4.4.1/include/asm-generic/dma-mapping-common.h]] --CONFIG_HAVE_DMA_ATTRS 無効: [[linux-4.4.1/include/linux/dma-mapping.h]] -FIXME: これは何? --説明 **引数 [#ee2fee2e] -struct device *dev -- --[[linux-4.4.1/device]] -void *ptr -- -size_t size -- -enum dma_data_direction dir -- --[[linux-4.4.1/dma_data_direction]] -struct dma_attrs *attrs -- --[[linux-4.4.1/dma_attrs]] **返り値 [#pafb0c86] -dma_addr_t -- **参考 [#fbd94e7b] *実装 [#r116de2a] **CONFIG_HAVE_DMA_ATTRS 有効: include/asm-generic/dma-mapping-common.h [#a3941f6b] static inline dma_addr_t dma_map_single_attrs(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); dma_addr_t addr; - --[[linux-4.4.1/dma_map_ops]] --[[linux-4.4.1/get_dma_ops()]] --[[linux-4.4.1/dma_addr_t]] kmemcheck_mark_initialized(ptr, size); BUG_ON(!valid_dma_direction(dir)); - --[[linux-4.4.1/kmemcheck_mark_initialized()]] --[[linux-4.4.1/BUG_ON()]] --[[linux-4.4.1/valid_dma_direction()]] addr = ops->map_page(dev, virt_to_page(ptr), (unsigned long)ptr & ~PAGE_MASK, size, dir, attrs); - --[[linux-4.4.1/virt_to_page()]] debug_dma_map_page(dev, virt_to_page(ptr), (unsigned long)ptr & ~PAGE_MASK, size, dir, addr, true); - --[[linux-4.4.1/debug_dma_map_page()]] return addr; } **CONFIG_HAVE_DMA_ATTRS 無効: include/linux/dma-mapping.h [#mef26331] #define dma_map_single_attrs(dev, cpu_addr, size, dir, attrs) \ dma_map_single(dev, cpu_addr, size, dir) - --[[linux-4.4.1/dma_map_single()]] *コメント [#xc92fb0b]