diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2017-05-12 18:45:15 -0800 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2017-05-12 23:14:24 -0800 |
commit | 565b4a74d6c25c78b0d2b82d9529595fc6269308 (patch) | |
tree | 3e4440a60c5f8519352ce5b6c587a7d1a79c4655 /include/linux/mempool.h | |
parent | a588eb0d9e30dffa4b319a4715c1454ee1d911f1 (diff) |
Update bcachefs sources to 14e9ac5016 bcachefs: btree_iter fastpath
Diffstat (limited to 'include/linux/mempool.h')
-rw-r--r-- | include/linux/mempool.h | 28 |
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 */ |