--- libelwix/inc/elwix/ampool.h 2022/10/24 00:10:22 1.6 +++ libelwix/inc/elwix/ampool.h 2024/12/05 12:33:49 1.7.12.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: ampool.h,v 1.6 2022/10/24 00:10:22 misho Exp $ +* $Id: ampool.h,v 1.7.12.1 2024/12/05 12:33:49 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2022 +Copyright 2004 - 2024 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -90,6 +90,10 @@ typedef struct _tagMPool { #define mpool_lock(x) (assert((x)), pthread_mutex_lock(&(x)->pool_mtx)) #define mpool_unlock(x) (assert((x)), pthread_mutex_unlock(&(x)->pool_mtx)) +#ifdef __cplusplus +extern "C" { +#endif + typedef int (*mpool_stat_cb)(unsigned int, unsigned int, unsigned int, void *, unsigned int); @@ -127,6 +131,16 @@ int mpool_purge(mpool_t * __restrict mp, unsigned int */ void *mpool_malloc(mpool_t * __restrict mp, unsigned int size, const char *memname); /* + * mpool_calloc() - Multiple memory block allocation + * + * @mp = Memory pool + * @nmemb = Number of memory blocks + * @size = Size + * @memname = Optional memory block name + * return: NULL error or !=NULL ok allocated memory + */ +void *mpool_calloc(mpool_t * __restrict mp, u_int nmemb, u_int size, const char *memname); +/* * mpool_free() Free allocated memory with mpool_alloc() * * @mp = Memory pool @@ -285,5 +299,8 @@ void mpool_dump(mpool_t * __restrict mp, const char *f */ int mpool_dump2(mpool_t * __restrict mp, char *str, int strlen); +#ifdef __cplusplus +} +#endif #endif