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