*参照元 [#t396aca7] #backlinks *説明 [#g269c295] -パス: [[linux-4.4.1/arch/arm64/mm/dma-mapping.c]] -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]] **返り値 [#y76341d4] -なし **参考 [#de5d12f8] *実装 [#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]