--- libaitsess/inc/aitsess.h 2012/02/28 13:00:24 1.5 +++ libaitsess/inc/aitsess.h 2012/07/22 22:13:48 1.6 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsess.h,v 1.5 2012/02/28 13:00:24 misho Exp $ +* $Id: aitsess.h,v 1.6 2012/07/22 22:13:48 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -66,47 +66,7 @@ SUCH DAMAGE. #define MAX_ATTRIBUTE 64 #define MAX_SEMNAME 14 -/* Memory pool */ -#define MEM_BUCKETS 28 /* 32 bits - 4 bits = 28 items in bucket array */ - -struct tagAlloc { - char alloc_name[MAX_ATTRIBUTE]; - - unsigned int *alloc_mem; - - TAILQ_ENTRY(tagAlloc) alloc_node; -}; -typedef TAILQ_HEAD(, tagAlloc) mpool_bucket_t; - -typedef struct _tagMPool { - pthread_mutex_t pool_mtx; - - struct { - unsigned long alloc; - unsigned long free; - unsigned long cache; - } pool_calls; - struct { - unsigned long alloc; - unsigned long free; - unsigned long cache; - } pool_bytes; - struct { - unsigned long max; - unsigned long curr; - } pool_quota; - - /* pool buckets */ - mpool_bucket_t pool_active[MEM_BUCKETS]; - mpool_bucket_t pool_inactive[MEM_BUCKETS]; -} mpool_t; -#define mpool_lock(x) (assert((x)), pthread_mutex_lock(&(x)->pool_mtx)) -#define mpool_unlock(x) (assert((x)), pthread_mutex_unlock(&(x)->pool_mtx)) - -typedef void (*mpool_stat_cb)(unsigned int, unsigned int, unsigned int); - - /* Shared memory session */ typedef struct tagSess { @@ -140,129 +100,15 @@ typedef struct tagSess { } ait_sess_t; -// ------------------------------------------------------- // sess_GetErrno() Get error code of last operation inline int sess_GetErrno(); // sess_GetError() Get error text of last operation inline const char *sess_GetError(); // sess_SetErr() Set error to variables for internal use!!! inline void sess_SetErr(int eno, char *estr, ...); -// ------------------------------------------------------- /* - * mpool_init() - Init memory pool - * - * @maxmem = If !=0 set maximum memory quota - * return: =NULL error or !=NULL new allocated pool - */ -mpool_t *mpool_init(unsigned long maxmem); -/* - * mpool_destroy() - Destroy memory pool - * - * @mp = Memory pool - * return: none - */ -void mpool_destroy(mpool_t ** __restrict mp); -/* - * mpool_purge() - Purge memory block cache and release resources - * - * @mp = Memory pool - * @atmost = Free at most in buckets - * return: -1 error or 0 ok - */ -int mpool_purge(mpool_t * __restrict mp, unsigned int atmost); -/* - * mpool_malloc() - Memory allocation - * - * @mp = Memory pool - * @size = Size - * @memname = Optional memory block name - * return: NULL error or !=NULL ok allocated memory - */ -void *mpool_malloc(mpool_t * __restrict mp, unsigned int size, const char *memname); -/* - * mpool_free() Free allocated memory with mpool_alloc() - * - * @mp = Memory pool - * @data = Allocated memory data - * @purge = if !=0 force release memory block - * return: <0 error or 0 ok released memory block - */ -int mpool_free(mpool_t * __restrict mp, void * __restrict data, int purge); -/* - * mpool_free2() Free allocated memory with mpool_alloc() by size and memory name - * - * @mp = Memory pool - * @size = Allocated memory data size - * @memname = Memory name - * @purge = if !=0 force release memory block - * return: <0 error or 0 ok released memory block - */ -int mpool_free2(mpool_t * __restrict mp, unsigned int size, const char *memname, int purge); -/* - * mpool_realloc() Reallocate memory block with new size - * - * @mp = Memory pool - * @data = Allocated memory data - * @newsize = New size of memory block - * @memname = Optional new memory block name - * return: NULL error or !=NULL new reallocated memory block - */ -void *mpool_realloc(mpool_t * __restrict mp, void * __restrict data, - unsigned int newsize, const char *memname); -/* - * mpool_getmembynam() Find allocated memory block by size and memory name - * - * @mp = Memory pool - * @size = Memory size - * @memname = Memory name - * return: NULL error or not found and !=NULL allocated memory - */ -inline struct tagAlloc *mpool_getmembynam(mpool_t * __restrict mp, unsigned int size, const char *memname); -/* - * mpool_getsizebyaddr() - Get size of allocated memory block by address - * - * @data = allocated memory from mpool_malloc() - * return: usable size of allocated memory block - */ -inline unsigned int mpool_getsizebyaddr(void * __restrict data); -/* - * mpool_chkaddr() - Check validity of given address - * - * @data = allocated memory from mpool_malloc() - * return: -1 bad address, 1 corrupted address or 0 ok - */ -inline int mpool_chkaddr(void * __restrict data); -/* - * mpool_setquota() - Change maximum memory quota - * - * @mp = Memory pool - * @maxmem = New max quota size - * return: old maximum memory quota size - */ -inline unsigned long mpool_setquota(mpool_t * __restrict mp, unsigned long maxmem); -/* - * mpool_getquota() - Get memory quota - * - * @mp = Memory pool - * @currmem = Return current memory - * @maxmem = Return max quota size - * return: none - */ -inline void mpool_getquota(mpool_t * __restrict mp, unsigned long *currmem, - unsigned long *maxmem); -/* - * mpool_statistics() - Dump statistics from memory pool buckets - * - * @mp = Memory pool - * @cb = Export statistics to callback - * return: none - */ -void mpool_statistics(mpool_t * __restrict mp, mpool_stat_cb cb); - - -/* * sess_initSession() Initializing session structure, if session file not exists creating with specified tech * * @id = Technology using in session. SHARED_IPC IPC tech orSHARED_MAP BSD MemoryMap tech @@ -278,7 +124,6 @@ int sess_initSession(int id, const char *csFName, ait_ * return: none */ void sess_freeSession(ait_sess_t ** __restrict Sess); - /* * map_createSession() MMAP Created session and allocated resources