summaryrefslogtreecommitdiff
path: root/include/linux/mempool.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-05-12 18:45:15 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2017-05-12 23:14:24 -0800
commit565b4a74d6c25c78b0d2b82d9529595fc6269308 (patch)
tree3e4440a60c5f8519352ce5b6c587a7d1a79c4655 /include/linux/mempool.h
parenta588eb0d9e30dffa4b319a4715c1454ee1d911f1 (diff)
Update bcachefs sources to 14e9ac5016 bcachefs: btree_iter fastpath
Diffstat (limited to 'include/linux/mempool.h')
-rw-r--r--include/linux/mempool.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/include/linux/mempool.h b/include/linux/mempool.h
index ddf6f941..37d81492 100644
--- a/include/linux/mempool.h
+++ b/include/linux/mempool.h
@@ -10,8 +10,14 @@
struct kmem_cache;
+typedef void * (mempool_alloc_t)(gfp_t gfp_mask, void *pool_data);
+typedef void (mempool_free_t)(void *element, void *pool_data);
+
typedef struct mempool_s {
- size_t elem_size;
+ size_t elem_size;
+ void *pool_data;
+ mempool_alloc_t *alloc;
+ mempool_free_t *free;
} mempool_t;
static inline bool mempool_initialized(mempool_t *pool)
@@ -60,24 +66,22 @@ static inline int mempool_init_kmalloc_pool(mempool_t *pool, int min_nr, size_t
return 0;
}
-static inline mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size)
-{
- mempool_t *pool = malloc(sizeof(*pool));
- pool->elem_size = size;
- return pool;
-}
-
static inline int mempool_init_page_pool(mempool_t *pool, int min_nr, int order)
{
pool->elem_size = PAGE_SIZE << order;
return 0;
}
-static inline mempool_t *mempool_create_page_pool(int min_nr, int order)
+static inline int mempool_init(mempool_t *pool, int min_nr,
+ mempool_alloc_t *alloc_fn,
+ mempool_free_t *free_fn,
+ void *pool_data)
{
- mempool_t *pool = malloc(sizeof(*pool));
- pool->elem_size = PAGE_SIZE << order;
- return pool;
+ pool->elem_size = (size_t) pool_data;
+ pool->pool_data = pool_data;
+ pool->alloc = alloc_fn;
+ pool->free = free_fn;
+ return 0;
}
#endif /* _LINUX_MEMPOOL_H */