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

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