X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2Fpools.h;h=aef1e63e4437f8a1f9838532cea0a12bbae700aa;hb=9f87c6fe6552ce8b2236a07307d2f825b0e4c439;hp=981dc3eb3123c1ae69f4cedcf779aa78370396db;hpb=82434b9e8d257be287b88a4f0d4e6f4a993106e2;p=libucw.git diff --git a/lib/pools.h b/lib/pools.h index 981dc3eb..aef1e63e 100644 --- a/lib/pools.h +++ b/lib/pools.h @@ -1,9 +1,15 @@ /* * Sherlock Library -- Memory Pools * - * (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. */ +#ifndef _SHERLOCK_POOLS_H +#define _SHERLOCK_POOLS_H + #ifndef POOL_ALIGN #define POOL_ALIGN CPU_STRUCT_ALIGN #endif @@ -15,27 +21,30 @@ struct mempool { uns chunk_size, threshold; }; -struct mempool *new_pool(uns); -void free_pool(struct mempool *); -void flush_pool(struct mempool *); -void *pool_alloc(struct mempool *, uns); +struct mempool *mp_new(uns); +void mp_delete(struct mempool *); +void mp_flush(struct mempool *); +void *mp_alloc(struct mempool *, uns); +void *mp_alloc_zero(struct mempool *, uns); -static inline void *fast_alloc(struct mempool *p, uns l) +static inline void *mp_alloc_fast(struct mempool *p, uns l) { byte *f = (void *) (((uns) p->free + POOL_ALIGN - 1) & ~(POOL_ALIGN - 1)); byte *ee = f + l; if (ee > p->last) - return pool_alloc(p, l); + return mp_alloc(p, l); p->free = ee; return f; } -static inline void *fast_alloc_noalign(struct mempool *p, uns l) +static inline void *mp_alloc_fast_noalign(struct mempool *p, uns l) { byte *f = p->free; byte *ee = f + l; if (ee > p->last) - return pool_alloc(p, l); + return mp_alloc(p, l); p->free = ee; return f; } + +#endif