*参照元 [#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]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS