---
name: "dma_pool_create"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/dma_pool_create"
---

# dma\_pool\_create(9)

Creates a pool of consistent memory blocks, for dma.

## NAME

dma\_pool\_create - Creates a pool of consistent memory blocks, for dma.

## SYNOPSIS

**struct dma\_pool \* dma\_pool\_create(const char \*** *name***, struct device \*** *dev***, size\_t** *size***, size\_t** *align***, size\_t** *boundary***);**

## ARGUMENTS

*name*

name of pool, for diagnostics

*dev*

device that will be doing the DMA

*size*

size of the blocks in this pool.

*align*

alignment requirement for blocks; must be a power of two

*boundary*

returned blocks won't cross this power of two boundary

## CONTEXT

!**in\_interrupt**

## DESCRIPTION

Returns a dma allocation pool with the requested characteristics, or null if one can't be created. Given one of these pools, **dma\_pool\_alloc** may be used to allocate memory. Such memory will all have “consistent” DMA mappings, accessible by the device and its driver without using cache flushing primitives. The actual size of blocks allocated may be larger than requested because of alignment.

If *boundary* is nonzero, objects returned from **dma\_pool\_alloc** won't cross that size boundary. This is useful for devices which have addressing restrictions on individual DMA transfers, such as not crossing boundaries of 4KBytes.

## COPYRIGHT
