X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpool.c;h=d581466ba210c87b8a3cb92dea9778a9f78cf259;hb=c49e8f00da4d1f214621a19364c64e30fa4afc7c;hp=b4783e87c46bb7a24fbbd76faf4bf79c321adb08;hpb=76ee03dea8ff0a04d7659ded5a9a53ef3eb39aa7;p=libucw.git diff --git a/lib/pool.c b/lib/pool.c index b4783e87..d581466b 100644 --- a/lib/pool.c +++ b/lib/pool.c @@ -1,13 +1,17 @@ /* * Sherlock Library -- Memory Pools (One-Time Allocation) * - * (c) 1997--1999 Martin Mares + * (c) 1997--2001 Martin Mares + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ #include "lib/lib.h" #include "lib/pools.h" #include +#include struct memchunk { struct memchunk *next; @@ -15,7 +19,7 @@ struct memchunk { }; struct mempool * -new_pool(uns size) +mp_new(uns size) { struct mempool *p = xmalloc(sizeof(struct mempool)); @@ -29,7 +33,7 @@ new_pool(uns size) } void -free_pool(struct mempool *p) +mp_delete(struct mempool *p) { struct memchunk *c, *d; @@ -47,7 +51,7 @@ free_pool(struct mempool *p) } void -flush_pool(struct mempool *p) +mp_flush(struct mempool *p) { struct memchunk *c; @@ -61,7 +65,7 @@ flush_pool(struct mempool *p) } void * -pool_alloc(struct mempool *p, uns s) +mp_alloc(struct mempool *p, uns s) { if (s <= p->threshold) { @@ -97,3 +101,20 @@ pool_alloc(struct mempool *p, uns s) return c->data; } } + +void * +mp_alloc_zero(struct mempool *p, uns s) +{ + void *x = mp_alloc(p, s); + bzero(x, s); + return x; +} + +char * +mp_strdup(struct mempool *p, char *s) +{ + uns l = strlen(s) + 1; + char *t = mp_alloc_fast_noalign(p, l); + memcpy(t, s, l); + return t; +}