On Wed, Feb 28, 2018 at 10:06:17PM +0200, Igor Stoppa wrote:
struct gen_pool *pmalloc_create_pool(const char *name,
int min_alloc_order);
int is_pmalloc_object(const void *ptr, const unsigned long n);
bool pmalloc_prealloc(struct gen_pool *pool, size_t size);
void *pmalloc(struct gen_pool *pool, size_t size, gfp_t gfp);
static inline void *pzalloc(struct gen_pool *pool, size_t size, gfp_t gfp)
static inline void *pmalloc_array(struct gen_pool *pool, size_t n,
size_t size, gfp_t flags)
static inline void *pcalloc(struct gen_pool *pool, size_t n,
size_t size, gfp_t flags)
static inline char *pstrdup(struct gen_pool *pool, const char *s, gfp_t gfp)
int pmalloc_protect_pool(struct gen_pool *pool);
static inline void pfree(struct gen_pool *pool, const void *addr)
int pmalloc_destroy_pool(struct gen_pool *pool);
Do you have users for all these functions? I'm particularly sceptical of
pfree(). To my mind, a user wants to:
pmalloc_create();
pmalloc(); * N
pmalloc_protect();
...
pmalloc_destroy();
I don't mind the pstrdup, pcalloc, pmalloc_array, pzalloc variations, but
I don't know why you need is_pmalloc_object().