*参照元 [#a552280a]
#backlinks

*説明 [#a0e9fc8b]
-パス: [[linux-4.4.1/drivers/base/dma-mapping.c]]

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


**引数 [#qd37f5cb]
-struct device *dev
--
--[[linux-4.4.1/device]]
-size_t size
--
-dma_addr_t *dma_handle
--
--[[linux-4.4.1/dma_addr_t]]
-gfp_t gfp
--
--[[linux-4.4.1/gfp_t]]


**返り値 [#h0c8196b]
-void *
--


**参考 [#wfdb8f89]


*実装 [#naf7f67b]
 /**
  * dmam_alloc_coherent - Managed dma_alloc_coherent()
  * @dev: Device to allocate coherent memory for
  * @size: Size of allocation
  * @dma_handle: Out argument for allocated DMA handle
  * @gfp: Allocation flags
  *
  * Managed dma_alloc_coherent().  Memory allocated using this function
  * will be automatically released on driver detach.
  *
  * RETURNS:
  * Pointer to allocated memory on success, NULL on failure.
  */
 void *dmam_alloc_coherent(struct device *dev, size_t size,
                            dma_addr_t *dma_handle, gfp_t gfp)
 {
         struct dma_devres *dr;
         void *vaddr;
 
-
--[[linux-4.4.1/dma_devres]]

         dr = devres_alloc(dmam_coherent_release, sizeof(*dr), gfp);
         if (!dr)
                 return NULL;
 
-
--[[linux-4.4.1/devres_alloc()]]
--[[linux-4.4.1/dmam_coherent_release()]]

         vaddr = dma_alloc_coherent(dev, size, dma_handle, gfp);
         if (!vaddr) {
                 devres_free(dr);
                 return NULL;
         }
 
-
--[[linux-4.4.1/dma_alloc_coherent()]]
--[[linux-4.4.1/devres_free()]]

         dr->vaddr = vaddr;
         dr->dma_handle = *dma_handle;
         dr->size = size;
 
         devres_add(dev, dr);
 
-
--[[linux-4.4.1/devres_add()]]

         return vaddr;
 }
 EXPORT_SYMBOL(dmam_alloc_coherent);
-
--[[linux-4.4.1/EXPORT_SYMBOL()]]


*コメント [#be619ef4]


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