|
version 1.1.1.1, 2013/01/17 10:05:35
|
version 1.4.18.2, 2015/06/25 01:19:09
|
|
Line 12 terms:
|
Line 12 terms:
|
| All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
| Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
| |
|
| Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 | Copyright 2004 - 2015 |
| by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
| |
|
| Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
|
Line 407 mpool_free(mpool_t * __restrict mp, void * __restrict
|
Line 407 mpool_free(mpool_t * __restrict mp, void * __restrict
|
| int idx; |
int idx; |
| struct tagAlloc *m, *tmp; |
struct tagAlloc *m, *tmp; |
| |
|
| assert(data); | if (!data) |
| | return 0; |
| if (!mp) { |
if (!mp) { |
| elwix_SetErr(EINVAL, "Pool not specified"); |
elwix_SetErr(EINVAL, "Pool not specified"); |
| return -1; |
return -1; |
|
Line 544 mpool_strdup(mpool_t * __restrict mp, const char *str,
|
Line 545 mpool_strdup(mpool_t * __restrict mp, const char *str,
|
| * @memname = Memory name |
* @memname = Memory name |
| * return: NULL error or not found and !=NULL allocated memory |
* return: NULL error or not found and !=NULL allocated memory |
| */ |
*/ |
| inline struct tagAlloc * | struct tagAlloc * |
| mpool_getmembynam(mpool_t * __restrict mp, u_int size, const char *memname) |
mpool_getmembynam(mpool_t * __restrict mp, u_int size, const char *memname) |
| { |
{ |
| int idx; |
int idx; |
|
Line 567 mpool_getmembynam(mpool_t * __restrict mp, u_int size,
|
Line 568 mpool_getmembynam(mpool_t * __restrict mp, u_int size,
|
| * @addr = allocated memory from mpool_malloc() |
* @addr = allocated memory from mpool_malloc() |
| * return: usable size of allocated memory block |
* return: usable size of allocated memory block |
| */ |
*/ |
| inline u_int | u_int |
| mpool_getsizebyaddr(void * __restrict data) |
mpool_getsizebyaddr(void * __restrict data) |
| { |
{ |
| if (mpool_chkaddr(data)) |
if (mpool_chkaddr(data)) |
|
Line 582 mpool_getsizebyaddr(void * __restrict data)
|
Line 583 mpool_getsizebyaddr(void * __restrict data)
|
| * @data = allocated memory from mpool_malloc() |
* @data = allocated memory from mpool_malloc() |
| * return: -1 bad address, 1 corrupted address or 0 ok |
* return: -1 bad address, 1 corrupted address or 0 ok |
| */ |
*/ |
| inline int | int |
| mpool_chkaddr(void * __restrict data) |
mpool_chkaddr(void * __restrict data) |
| { |
{ |
| /* check address range */ |
/* check address range */ |
|
Line 602 mpool_chkaddr(void * __restrict data)
|
Line 603 mpool_chkaddr(void * __restrict data)
|
| * @maxmem = New max quota size |
* @maxmem = New max quota size |
| * return: old maximum memory quota size |
* return: old maximum memory quota size |
| */ |
*/ |
| inline u_long | u_long |
| mpool_setquota(mpool_t * __restrict mp, u_long maxmem) |
mpool_setquota(mpool_t * __restrict mp, u_long maxmem) |
| { |
{ |
| u_long ret; |
u_long ret; |
|
Line 630 mpool_setquota(mpool_t * __restrict mp, u_long maxmem)
|
Line 631 mpool_setquota(mpool_t * __restrict mp, u_long maxmem)
|
| * @maxmem = Return max quota size |
* @maxmem = Return max quota size |
| * return: none |
* return: none |
| */ |
*/ |
| inline void | void |
| mpool_getquota(mpool_t * __restrict mp, u_long *currmem, u_long *maxmem) |
mpool_getquota(mpool_t * __restrict mp, u_long *currmem, u_long *maxmem) |
| { |
{ |
| if (!mp) |
if (!mp) |
|
Line 733 mpool_xstrdup(const char *str)
|
Line 734 mpool_xstrdup(const char *str)
|
| { |
{ |
| return mpool_strdup(elwix_mpool, str, elwix_Prog); |
return mpool_strdup(elwix_mpool, str, elwix_Prog); |
| } |
} |
| |
|
| |
/* |
| |
* mpool_xstatistics() - elwix memory pool statistics wrapper |
| |
* |
| |
* @cb = Export statistics to callback |
| |
* return: none |
| |
*/ |
| |
void |
| |
mpool_xstatistics(mpool_stat_cb cb) |
| |
{ |
| |
mpool_statistics(elwix_mpool, cb); |
| |
} |
| |
|
| |
static void |
| |
xdump_show(u_int size, u_int act, u_int inact) |
| |
{ |
| |
if (!act && !inact) |
| |
return; /* skip empty bucket */ |
| |
|
| |
if (size < 1024) |
| |
printf("\t\t* BUCKET %uB size, %u active, %u inactive\n", |
| |
size, act, inact); |
| |
else if (size < 1048576) |
| |
printf("\t\t* BUCKET %uKB size, %u active, %u inactive\n", |
| |
size / 1024, act, inact); |
| |
else |
| |
printf("\t\t* BUCKET %uMB size, %u active, %u inactive\n", |
| |
size / 1048576, act, inact); |
| |
} |
| |
|
| |
/* |
| |
* mpool_xdump() - Dump elwix memory pool statistics |
| |
* |
| |
* return: none |
| |
*/ |
| |
void |
| |
mpool_xdump() |
| |
{ |
| |
printf("\n%s(%d)\n------------------------------------------------------------\n", |
| |
__func__, __LINE__); |
| |
printf( " ELWIX memory pool ::\n" |
| |
"\t- quotas Current/Max = %lu/%lu\n" |
| |
"\t- calls Alloc/Free/Cache = %lu/%lu/%lu\n" |
| |
"\t- bytes Alloc/Free/Cache = %lu/%lu/%lu\n" |
| |
"\t- buckets :\n", |
| |
elwix_mpool->pool_quota.curr, elwix_mpool->pool_quota.max, |
| |
elwix_mpool->pool_calls.alloc, elwix_mpool->pool_calls.free, |
| |
elwix_mpool->pool_calls.cache, elwix_mpool->pool_bytes.alloc, |
| |
elwix_mpool->pool_bytes.free, elwix_mpool->pool_bytes.cache); |
| |
|
| |
mpool_statistics(elwix_mpool, xdump_show); |
| |
printf("------------------------------------------------------------\n"); |
| |
} |
| |
|