linux/include/linux/dmapool.h
<<
>>
Prefs
   1/*
   2 * include/linux/dmapool.h
   3 *
   4 * Allocation pools for DMAable (coherent) memory.
   5 *
   6 * This file is licensed under  the terms of the GNU General Public 
   7 * License version 2. This program is licensed "as is" without any 
   8 * warranty of any kind, whether express or implied.
   9 */
  10
  11#ifndef LINUX_DMAPOOL_H
  12#define LINUX_DMAPOOL_H
  13
  14#include <linux/scatterlist.h>
  15#include <asm/io.h>
  16
  17struct device;
  18
  19#ifdef CONFIG_HAS_DMA
  20
  21struct dma_pool *dma_pool_create(const char *name, struct device *dev, 
  22                        size_t size, size_t align, size_t allocation);
  23
  24void dma_pool_destroy(struct dma_pool *pool);
  25
  26void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
  27                     dma_addr_t *handle);
  28void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr);
  29
  30/*
  31 * Managed DMA pool
  32 */
  33struct dma_pool *dmam_pool_create(const char *name, struct device *dev,
  34                                  size_t size, size_t align, size_t allocation);
  35void dmam_pool_destroy(struct dma_pool *pool);
  36
  37#else /* !CONFIG_HAS_DMA */
  38static inline struct dma_pool *dma_pool_create(const char *name,
  39        struct device *dev, size_t size, size_t align, size_t allocation)
  40{ return NULL; }
  41static inline void dma_pool_destroy(struct dma_pool *pool) { }
  42static inline void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
  43                                   dma_addr_t *handle) { return NULL; }
  44static inline void dma_pool_free(struct dma_pool *pool, void *vaddr,
  45                                 dma_addr_t addr) { }
  46static inline struct dma_pool *dmam_pool_create(const char *name,
  47        struct device *dev, size_t size, size_t align, size_t allocation)
  48{ return NULL; }
  49static inline void dmam_pool_destroy(struct dma_pool *pool) { }
  50#endif /* !CONFIG_HAS_DMA */
  51
  52static inline void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags,
  53                                    dma_addr_t *handle)
  54{
  55        return dma_pool_alloc(pool, mem_flags | __GFP_ZERO, handle);
  56}
  57
  58#endif
  59
  60