Messages in this thread Patch in this message |  | | | From | Steve Wise <> | | Subject | [PATCH 2.6.18 ] LIB Add gen_pool_destroy(). | | Date | Wed, 27 Sep 2006 10:35:45 -0500 |
| |
Modules using the genpool allocator need to be able to destroy the data structure when unloading.
Signed-off-by: Steve Wise <swise@opengridcomputing.com> --- include/linux/genalloc.h | 1 + lib/genalloc.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 0 deletions(-) diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h index 690c428..ca2b119 100644 --- a/include/linux/genalloc.h +++ b/include/linux/genalloc.h @@ -30,6 +30,7 @@ struct gen_pool_chunk { }; extern struct gen_pool *gen_pool_create(int, int); +extern void gen_pool_destroy(struct gen_pool *); extern int gen_pool_add(struct gen_pool *, unsigned long, size_t, int); extern unsigned long gen_pool_alloc(struct gen_pool *, size_t); extern void gen_pool_free(struct gen_pool *, unsigned long, size_t); diff --git a/lib/genalloc.c b/lib/genalloc.c index 71338b4..c8afa10 100644 --- a/lib/genalloc.c +++ b/lib/genalloc.c @@ -36,6 +36,28 @@ EXPORT_SYMBOL(gen_pool_create); /* + * Destroy a memory pool. Assumes the user deals with releasing the + * actual memory managed by the pool. + * + * @pool: pool to destroy. + * + */ +void gen_pool_destroy(struct gen_pool *pool) +{ + struct list_head *_chunk, *next; + struct gen_pool_chunk *chunk; + + list_for_each_safe(_chunk, next, &pool->chunks) { + chunk = list_entry(_chunk, struct gen_pool_chunk, next_chunk); + kfree(chunk); + } + kfree(pool); + return; +} +EXPORT_SYMBOL(gen_pool_destroy); + + +/* * Add a new chunk of memory to the specified pool. * * @pool: pool to add new memory chunk to - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |