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