--- libaitio/inc/Attic/ampool.h 2012/05/23 10:54:45 1.1.2.1 +++ libaitio/inc/Attic/ampool.h 2012/07/22 20:39:45 1.3 @@ -1,13 +1,61 @@ +/************************************************************************* +* (C) 2012 AITNET ltd - Sofia/Bulgaria - +* by Michael Pounov +* +* $Author: misho $ +* $Id: ampool.h,v 1.3 2012/07/22 20:39:45 misho Exp $ +* +************************************************************************** +The ELWIX and AITNET software is distributed under the following +terms: + +All of the documentation and software included in the ELWIX and AITNET +Releases is copyrighted by ELWIX - Sofia/Bulgaria + +Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 + by Michael Pounov . All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: +This product includes software developed by Michael Pounov +ELWIX - Embedded LightWeight unIX and its contributors. +4. Neither the name of AITNET nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +*/ #ifndef __AMPOOL_H #define __AMPOOL_H +#include + + /* Memory pool */ #define MEM_BUCKETS 28 /* 32 bits - 4 bits = 28 items in bucket array */ struct tagAlloc { - char alloc_name[MAX_ATTRIBUTE]; + char alloc_name[64]; unsigned int *alloc_mem; @@ -106,6 +154,15 @@ int mpool_free2(mpool_t * __restrict mp, unsigned int void *mpool_realloc(mpool_t * __restrict mp, void * __restrict data, unsigned int newsize, const char *memname); /* + * mpool_strdup() - String duplicate + * + * @mp = Memory pool + * @str = String + * @memname = Memory name + * return: NULL error or !=NULL new string + */ +char *mpool_strdup(mpool_t * __restrict mp, const char *str, const char *memname); +/* * mpool_getmembynam() Find allocated memory block by size and memory name * * @mp = Memory pool @@ -154,6 +211,47 @@ inline void mpool_getquota(mpool_t * __restrict mp, un * return: none */ void mpool_statistics(mpool_t * __restrict mp, mpool_stat_cb cb); + + +/* Wrappers */ + +/* + * mpool_xmalloc() - malloc wrapper + * + * @size = Size + * return: NULL error or !=NULL ok allocated memory + */ +void *mpool_xmalloc(size_t size); +/* + * mpool_xcalloc() - calloc wrapper + * + * @num = number of elements + * @size = Size of element + * return: NULL error or !=NULL ok allocated memory + */ +void *mpool_xcalloc(size_t num, size_t size); +/* + * mpool_xrealloc() - realloc wrapper + * + * @data = Allocated memory data + * @newsize = New size of memory block + * return: NULL error or !=NULL new reallocated memory block + */ +void *mpool_xrealloc(void * __restrict data, size_t newsize); +/* + * mpool_xfree() - free wrapper + * + * @data = Allocated memory data + * return: none + */ +void mpool_xfree(void * __restrict data); +/* + * mpool_xstrdup() - strdup wrapper + * + * @str = string + * return: =NULL error or !=NULL new allocated string + */ +char *mpool_xstrdup(const char *str); #endif