lib/genalloc: add gen_pool_dma_zalloc() for zeroed DMA allocations
gen_pool_dma_zalloc() is a zeroed memory variant of gen_pool_dma_alloc(). Also document the return values of both, and indicate NULL as a "%NULL" constant. Signed-off-by: Fredrik Noring <noring@nocrew.org> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
dd3dcede9f
commit
da83a72295
|
@ -121,6 +121,7 @@ extern unsigned long gen_pool_alloc_algo(struct gen_pool *, size_t,
|
||||||
genpool_algo_t algo, void *data);
|
genpool_algo_t algo, void *data);
|
||||||
extern void *gen_pool_dma_alloc(struct gen_pool *pool, size_t size,
|
extern void *gen_pool_dma_alloc(struct gen_pool *pool, size_t size,
|
||||||
dma_addr_t *dma);
|
dma_addr_t *dma);
|
||||||
|
void *gen_pool_dma_zalloc(struct gen_pool *pool, size_t size, dma_addr_t *dma);
|
||||||
extern void gen_pool_free(struct gen_pool *, unsigned long, size_t);
|
extern void gen_pool_free(struct gen_pool *, unsigned long, size_t);
|
||||||
extern void gen_pool_for_each_chunk(struct gen_pool *,
|
extern void gen_pool_for_each_chunk(struct gen_pool *,
|
||||||
void (*)(struct gen_pool *, struct gen_pool_chunk *, void *), void *);
|
void (*)(struct gen_pool *, struct gen_pool_chunk *, void *), void *);
|
||||||
|
|
|
@ -337,12 +337,14 @@ EXPORT_SYMBOL(gen_pool_alloc_algo);
|
||||||
* gen_pool_dma_alloc - allocate special memory from the pool for DMA usage
|
* gen_pool_dma_alloc - allocate special memory from the pool for DMA usage
|
||||||
* @pool: pool to allocate from
|
* @pool: pool to allocate from
|
||||||
* @size: number of bytes to allocate from the pool
|
* @size: number of bytes to allocate from the pool
|
||||||
* @dma: dma-view physical address return value. Use NULL if unneeded.
|
* @dma: dma-view physical address return value. Use %NULL if unneeded.
|
||||||
*
|
*
|
||||||
* Allocate the requested number of bytes from the specified pool.
|
* Allocate the requested number of bytes from the specified pool.
|
||||||
* Uses the pool allocation function (with first-fit algorithm by default).
|
* Uses the pool allocation function (with first-fit algorithm by default).
|
||||||
* Can not be used in NMI handler on architectures without
|
* Can not be used in NMI handler on architectures without
|
||||||
* NMI-safe cmpxchg implementation.
|
* NMI-safe cmpxchg implementation.
|
||||||
|
*
|
||||||
|
* Return: virtual address of the allocated memory, or %NULL on failure
|
||||||
*/
|
*/
|
||||||
void *gen_pool_dma_alloc(struct gen_pool *pool, size_t size, dma_addr_t *dma)
|
void *gen_pool_dma_alloc(struct gen_pool *pool, size_t size, dma_addr_t *dma)
|
||||||
{
|
{
|
||||||
|
@ -362,6 +364,31 @@ void *gen_pool_dma_alloc(struct gen_pool *pool, size_t size, dma_addr_t *dma)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(gen_pool_dma_alloc);
|
EXPORT_SYMBOL(gen_pool_dma_alloc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gen_pool_dma_zalloc - allocate special zeroed memory from the pool for
|
||||||
|
* DMA usage
|
||||||
|
* @pool: pool to allocate from
|
||||||
|
* @size: number of bytes to allocate from the pool
|
||||||
|
* @dma: dma-view physical address return value. Use %NULL if unneeded.
|
||||||
|
*
|
||||||
|
* Allocate the requested number of zeroed bytes from the specified pool.
|
||||||
|
* Uses the pool allocation function (with first-fit algorithm by default).
|
||||||
|
* Can not be used in NMI handler on architectures without
|
||||||
|
* NMI-safe cmpxchg implementation.
|
||||||
|
*
|
||||||
|
* Return: virtual address of the allocated zeroed memory, or %NULL on failure
|
||||||
|
*/
|
||||||
|
void *gen_pool_dma_zalloc(struct gen_pool *pool, size_t size, dma_addr_t *dma)
|
||||||
|
{
|
||||||
|
void *vaddr = gen_pool_dma_alloc(pool, size, dma);
|
||||||
|
|
||||||
|
if (vaddr)
|
||||||
|
memset(vaddr, 0, size);
|
||||||
|
|
||||||
|
return vaddr;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(gen_pool_dma_zalloc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gen_pool_free - free allocated special memory back to the pool
|
* gen_pool_free - free allocated special memory back to the pool
|
||||||
* @pool: pool to free to
|
* @pool: pool to free to
|
||||||
|
|
Loading…
Reference in New Issue