- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#t396aca7]
*参照元 [#if3e95d4]
#backlinks
*説明 [#g269c295]
-パス: [[linux-4.4.1/arch/arm64/mm/dma-mapping.c]]
*説明 [#s2ba2b8b]
-パス: 複数あり
--arm64 版: [[linux-4.4.1/__dma_free()(arm64)]]
--avr32 版: [[linux-4.4.1/__dma_free()(avr32)]]
-FIXME: これは何?
--説明
**引数 [#a011ec3e]
-struct device *dev
--
--[[linux-4.4.1/device]]
-size_t size
--
-void *vaddr
--
-dma_addr_t dma_handle
--
--[[linux-4.4.1/dma_addr_t]]
-struct dma_attrs *attrs
--
--[[linux-4.4.1/dma_attrs]]
**参考 [#rb19107e]
**返り値 [#y76341d4]
-なし
*実装 [#x04b5d54]
-各アーキテクチャのページを参照してください。
**参考 [#de5d12f8]
*コメント [#ab033a4d]
*実装 [#kd17f3c4]
static void __dma_free(struct device *dev, size_t size,
void *vaddr, dma_addr_t dma_handle,
struct dma_attrs *attrs)
{
void *swiotlb_addr = phys_to_virt(dma_to_phys(dev, dma_handle));
-
--[[linux-4.4.1/phys_to_virt()]]
--[[linux-4.4.1/dma_to_phys()]]
size = PAGE_ALIGN(size);
-
--[[linux-4.4.1/PAGE_ALIGN()]]
if (!is_device_dma_coherent(dev)) {
if (__free_from_pool(vaddr, size))
return;
vunmap(vaddr);
}
-
--[[linux-4.4.1/is_device_dma_coherent()]]
--[[linux-4.4.1/__free_from_pool()]]
--[[linux-4.4.1/vunmap()]]
__dma_free_coherent(dev, size, swiotlb_addr, dma_handle, attrs);
-
--[[linux-4.4.1/__dma_free_coherent()]]
}
*コメント [#a0f215a0]