*参照元 [#td61973f] #backlinks *説明 [#b94505e8] -パス: 複数あり --CONFIG_HAS_DMA 有効: [[linux-4.4.1/include/asm-generic/dma-mapping-common.h]] --CONFIG_HAS_DMA 無効: [[linux-4.4.1/include/asm-generic/dma-mapping-broken.h]] --[[linux-4.4.1/CONFIG_HAS_DMA]] -FIXME: これは何? --説明 **引数 [#wb97f564] -struct device *dev -- --[[linux-4.4.1/device]] -size_t size -- -void *cpu_addr -- -dma_addr_t *dma_handle -- --[[linux-4.4.1/dma_addr_t]] -dma_attrs *attrs -- --[[linux-4.4.1/dma_attrs]] **返り値 [#m70a62e1] -なし **参考 [#hcc0abd6] *実装 [#ed604856] **CONFIG_HAS_DMA 有効: include/asm-generic/dma-mapping-common.h [#q37ac1e7] static inline void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); - --[[linux-4.4.1/dma_map_ops]] --[[linux-4.4.1/get_dma_ops()]] BUG_ON(!ops); WARN_ON(irqs_disabled()); - --[[linux-4.4.1/BUG_ON()]] --[[linux-4.4.1/WARN_ON()]] --[[linux-4.4.1/irqs_disabled()]] if (dma_release_from_coherent(dev, get_order(size), cpu_addr)) return; - --[[linux-4.4.1/dma_release_from_coherent()]] --[[linux-4.4.1/get_order(size)]] --[[linux-4.4.1/get_order()]] if (!ops->free) return; debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); ops->free(dev, size, cpu_addr, dma_handle, attrs); - --[[linux-4.4.1/debug_dma_free_coherent()]] } **CONFIG_HAS_DMA 無効: include/asm-generic/dma-mapping-broken.h [#bcaf09d9] static inline void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle, struct dma_attrs *attrs) { /* attrs is not supported and ignored */ dma_free_coherent(dev, size, cpu_addr, dma_handle); - --[[linux-4.4.1/dma_free_coherent()]] } *コメント [#zc60591c]