diff options
Diffstat (limited to 'include/linux/mempool.h')
| -rw-r--r-- | include/linux/mempool.h | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/include/linux/mempool.h b/include/linux/mempool.h index f2427d7394b0..9be484d11283 100644 --- a/include/linux/mempool.h +++ b/include/linux/mempool.h  | |||
| @@ -6,6 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | #include <linux/wait.h> | 7 | #include <linux/wait.h> | 
| 8 | 8 | ||
| 9 | struct kmem_cache; | ||
| 10 | |||
| 9 | typedef void * (mempool_alloc_t)(gfp_t gfp_mask, void *pool_data); | 11 | typedef void * (mempool_alloc_t)(gfp_t gfp_mask, void *pool_data); | 
| 10 | typedef void (mempool_free_t)(void *element, void *pool_data); | 12 | typedef void (mempool_free_t)(void *element, void *pool_data); | 
| 11 | 13 | ||
| @@ -37,5 +39,41 @@ extern void mempool_free(void *element, mempool_t *pool); | |||
| 37 | */ | 39 | */ | 
| 38 | void *mempool_alloc_slab(gfp_t gfp_mask, void *pool_data); | 40 | void *mempool_alloc_slab(gfp_t gfp_mask, void *pool_data); | 
| 39 | void mempool_free_slab(void *element, void *pool_data); | 41 | void mempool_free_slab(void *element, void *pool_data); | 
| 42 | static inline mempool_t * | ||
| 43 | mempool_create_slab_pool(int min_nr, struct kmem_cache *kc) | ||
| 44 | { | ||
| 45 | return mempool_create(min_nr, mempool_alloc_slab, mempool_free_slab, | ||
| 46 | (void *) kc); | ||
| 47 | } | ||
| 48 | |||
| 49 | /* | ||
| 50 | * 2 mempool_alloc_t's and a mempool_free_t to kmalloc/kzalloc and kfree | ||
| 51 | * the amount of memory specified by pool_data | ||
| 52 | */ | ||
| 53 | void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data); | ||
| 54 | void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data); | ||
| 55 | void mempool_kfree(void *element, void *pool_data); | ||
| 56 | static inline mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size) | ||
| 57 | { | ||
| 58 | return mempool_create(min_nr, mempool_kmalloc, mempool_kfree, | ||
| 59 | (void *) size); | ||
| 60 | } | ||
| 61 | static inline mempool_t *mempool_create_kzalloc_pool(int min_nr, size_t size) | ||
| 62 | { | ||
| 63 | return mempool_create(min_nr, mempool_kzalloc, mempool_kfree, | ||
| 64 | (void *) size); | ||
| 65 | } | ||
| 66 | |||
| 67 | /* | ||
| 68 | * A mempool_alloc_t and mempool_free_t for a simple page allocator that | ||
| 69 | * allocates pages of the order specified by pool_data | ||
| 70 | */ | ||
| 71 | void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data); | ||
| 72 | void mempool_free_pages(void *element, void *pool_data); | ||
| 73 | static inline mempool_t *mempool_create_page_pool(int min_nr, int order) | ||
| 74 | { | ||
| 75 | return mempool_create(min_nr, mempool_alloc_pages, mempool_free_pages, | ||
| 76 | (void *)(long)order); | ||
| 77 | } | ||
| 40 | 78 | ||
| 41 | #endif /* _LINUX_MEMPOOL_H */ | 79 | #endif /* _LINUX_MEMPOOL_H */ | 
