*参照元 [#tec6e90a] #backlinks *説明 [#v9ac00b3] -パス: [[linux-2.6.33/arch/x86/include/asm/dma-mapping.h]] -FIXME: これは何? --説明 **引数 [#ec9b7cc2] -struct device *dev -- --[[linux-2.6.33/device]] -size_t size -- -dma_addr_t *dma_handle -- --[[linux-2.6.33/dma_addr_t]] -gfp_t gfp -- --[[linux-2.6.33/gfp_t]] **返り値 [#tcda83ca] -void * -- **参考 [#xdbecee3] *実装 [#c21aed38] static inline void * dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp) { struct dma_map_ops *ops = get_dma_ops(dev); void *memory; - --[[linux-2.6.33/dma_map_ops]] - --[[linux-2.6.33/get_dma_ops()]] gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32); - --[[linux-2.6.33/__GFP_DMA]] - --[[linux-2.6.33/__GFP_HIGHMEM]] - --[[linux-2.6.33/__GFP_DMA32]] if (dma_alloc_from_coherent(dev, size, dma_handle, &memory)) return memory; - --[[linux-2.6.33/dma_alloc_from_coherent()]] if (!dev) dev = &x86_dma_fallback_dev; - --[[linux-2.6.33/x86_dma_fallback_dev(global)]] if (!is_device_dma_capable(dev)) return NULL; - --[[linux-2.6.33/is_device_dma_capable()]] if (!ops->alloc_coherent) return NULL; memory = ops->alloc_coherent(dev, size, dma_handle, dma_alloc_coherent_gfp_flags(dev, gfp)); debug_dma_alloc_coherent(dev, size, *dma_handle, memory); - --[[linux-2.6.33/debug_dma_alloc_coherent()]] return memory; } *コメント [#e8161aa8]