version 1.5, 2012/02/28 13:00:24
|
version 1.5.2.1, 2012/05/23 10:53:18
|
Line 66 SUCH DAMAGE.
|
Line 66 SUCH DAMAGE.
|
#define MAX_ATTRIBUTE 64 |
#define MAX_ATTRIBUTE 64 |
#define MAX_SEMNAME 14 |
#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 */ |
/* Shared memory session */ |
|
|
typedef struct tagSess { |
typedef struct tagSess { |
Line 140 typedef struct tagSess {
|
Line 100 typedef struct tagSess {
|
} ait_sess_t; |
} ait_sess_t; |
|
|
|
|
// ------------------------------------------------------- |
|
// sess_GetErrno() Get error code of last operation |
// sess_GetErrno() Get error code of last operation |
inline int sess_GetErrno(); |
inline int sess_GetErrno(); |
// sess_GetError() Get error text of last operation |
// sess_GetError() Get error text of last operation |
inline const char *sess_GetError(); |
inline const char *sess_GetError(); |
// sess_SetErr() Set error to variables for internal use!!! |
// sess_SetErr() Set error to variables for internal use!!! |
inline void sess_SetErr(int eno, char *estr, ...); |
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 |
* 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 |
* @id = Technology using in session. SHARED_IPC IPC tech orSHARED_MAP BSD MemoryMap tech |
Line 278 int sess_initSession(int id, const char *csFName, ait_
|
Line 124 int sess_initSession(int id, const char *csFName, ait_
|
* return: none |
* return: none |
*/ |
*/ |
void sess_freeSession(ait_sess_t ** __restrict Sess); |
void sess_freeSession(ait_sess_t ** __restrict Sess); |
|
|
|
|
/* |
/* |
* map_createSession() MMAP Created session and allocated resources |
* map_createSession() MMAP Created session and allocated resources |