*参照元 [#m3fff147]
#backlinks

*説明 [#m6254a45]
-パス: [[linux-4.4.1/drivers/media/v4l2-core/videobuf2-dma-contig.c]]

-FIXME: これは何?
--説明


**引数 [#t7f7ae62]
-struct dma_buf_attachment *db_attach
--
--[[linux-4.4.1/dma_buf_attachment]]
-enum dma_data_direction dma_dir
--
--[[linux-4.4.1/dma_data_direction]]


**返り値 [#d9e5acdb]
-struct sg_table *
--
--[[linux-4.4.1/sg_table]]


**参考 [#tc149c20]


*実装 [#z85554e8]
 static struct sg_table *vb2_dc_dmabuf_ops_map(
         struct dma_buf_attachment *db_attach, enum dma_data_direction dma_dir)
 {
         struct vb2_dc_attachment *attach = db_attach->priv;
         /* stealing dmabuf mutex to serialize map/unmap operations */
         struct mutex *lock = &db_attach->dmabuf->lock;
         struct sg_table *sgt;
 
-
--[[linux-4.4.1/vb2_dc_attachment]]
--[[linux-4.4.1/mutex]]
--[[linux-4.4.1/sg_table]]

         mutex_lock(lock);
 
-
--[[linux-4.4.1/mutex_lock()]]

         sgt = &attach->sgt;
         /* return previously mapped sg table */
         if (attach->dma_dir == dma_dir) {
                 mutex_unlock(lock);
                 return sgt;
         }
 
-
--[[linux-4.4.1/mutex_unlock()]]

         /* release any previous cache */
         if (attach->dma_dir != DMA_NONE) {
                 dma_unmap_sg(db_attach->dev, sgt->sgl, sgt->orig_nents,
                         attach->dma_dir);
                 attach->dma_dir = DMA_NONE;
         }
 
-
--[[linux-4.4.1/dma_unmap_sg()]]

         /* mapping to the client with new direction */
         sgt->nents = dma_map_sg(db_attach->dev, sgt->sgl, sgt->orig_nents,
                                 dma_dir);
         if (!sgt->nents) {
                 pr_err("failed to map scatterlist\n");
                 mutex_unlock(lock);
                 return ERR_PTR(-EIO);
         }
 
-
--[[linux-4.4.1/dma_map_sg()]]
--[[linux-4.4.1/ERR_PTR()]]

         attach->dma_dir = dma_dir;
 
         mutex_unlock(lock);
 
         return sgt;
 }


*コメント [#be02b8da]


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