*参照元 [#h8db2f2a] #backlinks *説明 [#de5a0fba] -パス: [[linux-4.4.1/arch/arm/mm/dma-mapping.c]] -FIXME: これは何? --説明 **引数 [#i0c359f4] -struct device *dev -- --[[linux-4.4.1/device]] -struct scatterlist *sg -- --[[linux-4.4.1/scatterlist]] -int nents -- -enum dma_data_direction dir -- --[[linux-4.4.1/dma_data_direction]] **返り値 [#ae9fbbce] -なし **参考 [#m6fdbecf] *実装 [#c1bcabc7] /** * arm_dma_sync_sg_for_device * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices * @sg: list of buffers * @nents: number of buffers to map (returned from dma_map_sg) * @dir: DMA transfer direction (same as was passed to dma_map_sg) */ void arm_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); struct scatterlist *s; int i; - --[[linux-4.4.1/dma_map_ops]] --[[linux-4.4.1/get_dma_ops()]] for_each_sg(sg, s, nents, i) ops->sync_single_for_device(dev, sg_dma_address(s), s->length, dir); - --sync_single_for_device の実装については dma_map_ops から辿れます。 --[[linux-4.4.1/dma_map_ops]] --[[linux-4.4.1/for_each_sg()]] --[[linux-4.4.1/sg_dma_address()]] -ここに来るということは、おそらく ops は arm_dma_ops のはず。従って sync_single_for_device は arm_dma_sync_single_for_device() を指していると思われる。 --[[linux-4.4.1/arm_dma_ops(global)]] --[[linux-4.4.1/arm_dma_sync_single_for_device()]] } *コメント [#k948e4bc]