*参照元 [#q9b4dc96]
#backlinks

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

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


**引数 [#g52f971b]
-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]]


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


**参考 [#eafe2657]


*実装 [#p6f716dc]
 /**
  * dmam_alloc_non_coherent - Managed dma_alloc_non_coherent()
  * @dev: Device to allocate non_coherent memory for
  * @size: Size of allocation
  * @dma_handle: Out argument for allocated DMA handle
  * @gfp: Allocation flags
  *
  * Managed dma_alloc_non_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_noncoherent(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_noncoherent_release, sizeof(*dr), gfp);
         if (!dr)
                 return NULL;
 
-
--[[linux-4.4.1/devres_alloc()]]
--[[linux-4.4.1/dmam_noncoherent_release()]]

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

         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_noncoherent);
-
--[[linux-4.4.1/EXPORT_SYMBOL()]]


*コメント [#d5defd86]

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