Blame view

include/linux/dmapool.h 1.79 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
  /*
   * include/linux/dmapool.h
   *
   * Allocation pools for DMAable (coherent) memory.
   *
   * This file is licensed under  the terms of the GNU General Public 
   * License version 2. This program is licensed "as is" without any 
   * warranty of any kind, whether express or implied.
   */
  
  #ifndef LINUX_DMAPOOL_H
  #define	LINUX_DMAPOOL_H
84be456f8   Christoph Hellwig   remove <asm/scatt...
13
  #include <linux/scatterlist.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
14
  #include <asm/io.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15

ce66b032a   Mark Brown   include/linux/dma...
16
  struct device;
c1ce6c2be   Geert Uytterhoeven   mm: Add NO_DMA du...
17
  #ifdef CONFIG_HAS_DMA
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18
19
20
21
  struct dma_pool *dma_pool_create(const char *name, struct device *dev, 
  			size_t size, size_t align, size_t allocation);
  
  void dma_pool_destroy(struct dma_pool *pool);
dd0fc66fb   Al Viro   [PATCH] gfp flags...
22
  void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
3a11ec5e5   Victor Fusco   [PATCH] dmapool: ...
23
  		     dma_addr_t *handle);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
24
  void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr);
9ac7849e3   Tejun Heo   devres: device re...
25
26
27
28
29
30
  /*
   * Managed DMA pool
   */
  struct dma_pool *dmam_pool_create(const char *name, struct device *dev,
  				  size_t size, size_t align, size_t allocation);
  void dmam_pool_destroy(struct dma_pool *pool);
c1ce6c2be   Geert Uytterhoeven   mm: Add NO_DMA du...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  #else /* !CONFIG_HAS_DMA */
  static inline struct dma_pool *dma_pool_create(const char *name,
  	struct device *dev, size_t size, size_t align, size_t allocation)
  { return NULL; }
  static inline void dma_pool_destroy(struct dma_pool *pool) { }
  static inline void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
  				   dma_addr_t *handle) { return NULL; }
  static inline void dma_pool_free(struct dma_pool *pool, void *vaddr,
  				 dma_addr_t addr) { }
  static inline struct dma_pool *dmam_pool_create(const char *name,
  	struct device *dev, size_t size, size_t align, size_t allocation)
  { return NULL; }
  static inline void dmam_pool_destroy(struct dma_pool *pool) { }
  #endif /* !CONFIG_HAS_DMA */
  
  static inline void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags,
  				    dma_addr_t *handle)
  {
  	return dma_pool_alloc(pool, mem_flags | __GFP_ZERO, handle);
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
51
  #endif