*参照元 [#kbe1ff41] #backlinks *説明 [#t00bb5e9] -パス: [[linux-2.6.33/arch/arm/mm/dma-mapping.c]] -FIXME: これは何? --説明 **引数 [#f1e0040c] -const void *start -- -size_t size -- -int direction -- **返り値 [#g38856b9] -なし **参考 [#se1cdf37] *実装 [#y167ee8d] /* * Make an area consistent for devices. * Note: Drivers should NOT use this function directly, as it will break * platforms with CONFIG_DMABOUNCE. * Use the driver DMA support - see dma-mapping.h (dma_sync_*) */ void dma_cache_maint(const void *start, size_t size, int direction) { void (*inner_op)(const void *, const void *); void (*outer_op)(unsigned long, unsigned long); BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1)); - --[[linux-2.6.33/virt_addr_valid()]] - --[[linux-2.6.33/BUG_ON()]] switch (direction) { case DMA_FROM_DEVICE: /* invalidate only */ inner_op = dmac_inv_range; outer_op = outer_inv_range; - --[[linux-2.6.33/DMA_FROM_DEVICE]] --[[linux-2.6.33/dmac_inv_range]] --[[linux-2.6.33/outer_inv_range]] break; case DMA_TO_DEVICE: /* writeback only */ inner_op = dmac_clean_range; outer_op = outer_clean_range; - --[[linux-2.6.33/DMA_TO_DEVICE]] --[[linux-2.6.33/dmac_clean_range]] --[[linux-2.6.33/outer_clean_range]] break; case DMA_BIDIRECTIONAL: /* writeback and invalidate */ inner_op = dmac_flush_range; outer_op = outer_flush_range; - --[[linux-2.6.33/DMA_BIDIRECTIONAL]] --[[linux-2.6.33/dmac_flush_range]] --[[linux-2.6.33/outer_flush_range]] break; default: BUG(); - --[[linux-2.6.33/BUG()]] } inner_op(start, start + size); outer_op(__pa(start), __pa(start) + size); } EXPORT_SYMBOL(dma_cache_maint); -ライセンスに関係なくシンボルを公開する。 --[[linux-2.6.33/EXPORT_SYMBOL()]] *コメント [#xbfddf8e]