*参照元 [#tad152d3]
#backlinks

*説明 [#v4a9e095]
-パス: 複数あり
--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: これは何?
--説明


**引数 [#y69b0d25]
-struct device *dev
--
--[[linux-4.4.1/devie]]
--[[linux-4.4.1/device]]
-size_t size
--
-dma_addr_t *dma_handle
--
--[[linux-4.4.1/dma_addr_t]]
-gfp_t flag
--
--[[linux-4.4.1/gfp_t]]
-struct dma_attrs *attrs
--
--[[linux-4.4.1/dma_attrs]]


**返り値 [#td81df23]
-なし


**参考 [#b9248b86]


*実装 [#wf0b2a83]

**CONFIG_HAS_DMA 有効: include/asm-generic/dma-mapping-common.h [#udaa297b]

 static inline void *dma_alloc_attrs(struct device *dev, size_t size,
                                        dma_addr_t *dma_handle, gfp_t flag,
                                        struct dma_attrs *attrs)
 {
         struct dma_map_ops *ops = get_dma_ops(dev);
         void *cpu_addr;
 
-
--[[linux-4.4.1/dma_map_ops]]
--[[linux-4.4.1/get_dma_ops()]]

         BUG_ON(!ops);
 
-
--[[linux-4.4.1/BUG_ON()]]

         if (dma_alloc_from_coherent(dev, size, dma_handle, &cpu_addr))
                 return cpu_addr;
 
-
--[[linux-4.4.1/dma_alloc_from_coherent()]]
-
--[[linux-4.4.1/cpu_addr(global)]]

         if (!arch_dma_alloc_attrs(&dev, &flag))
                 return NULL;
         if (!ops->alloc)
                 return NULL;
 
-
--[[linux-4.4.1/arch_dma_alloc_attrs()]]

         cpu_addr = ops->alloc(dev, size, dma_handle, flag, attrs);
         debug_dma_alloc_coherent(dev, size, *dma_handle, cpu_addr);
-
--alloc の実装については dma_map_ops から辿れます。
--[[linux-4.4.1/dma_map_ops]]
--[[linux-4.4.1/debug_dma_alloc_coherent()]]

         return cpu_addr;
 }


**CONFIG_HAS_DMA 無効: include/asm-generic/dma-mapping-broken.h [#cfa630fa]

 static inline void *dma_alloc_attrs(struct device *dev, size_t size,
                                     dma_addr_t *dma_handle, gfp_t flag,
                                     struct dma_attrs *attrs)
 {
         /* attrs is not supported and ignored */
         return dma_alloc_coherent(dev, size, dma_handle, flag);
-
--[[linux-4.4.1/dma_alloc_coherent()]]

 }


*コメント [#l6a285fa]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS