2 * UCW Library -- Fast Allocator for Fixed-Size Elements
4 * (c) 2007 Martin Mares <mj@ucw.cz>
6 * This software may be freely distributed and used according to the terms
7 * of the GNU Lesser General Public License.
10 #ifndef _UCW_ELTPOOL_H
11 #define _UCW_ELTPOOL_H
14 struct eltpool_chunk *first_chunk;
15 struct eltpool_free *first_free;
21 struct eltpool_chunk {
22 struct eltpool_chunk *next;
23 /* Chunk data continue here */
27 struct eltpool_free *next;
30 struct eltpool *ep_new(uns elt_size, uns elts_per_chunk);
31 void ep_delete(struct eltpool *pool);
32 void *ep_alloc_slow(struct eltpool *pool);
35 ep_alloc(struct eltpool *pool)
37 #ifdef CONFIG_FAKE_ELTPOOL
38 return xmalloc(pool->elt_size);
40 struct eltpool_free *elt;
41 if (elt = pool->first_free)
42 pool->first_free = elt->next;
44 elt = ep_alloc_slow(pool);
50 ep_free(struct eltpool *pool, void *p)
52 #ifdef CONFIG_FAKE_ELTPOOL
56 struct eltpool_free *elt = p;
57 elt->next = pool->first_free;
58 pool->first_free = elt;