--- libaitsess/contrib/Attic/test_mem.c 2012/02/27 21:18:31 1.1 +++ libaitsess/contrib/Attic/test_mem.c 2012/02/28 13:00:24 1.2 @@ -0,0 +1,109 @@ +#include +#include + + +void show(u_int size, u_int act, u_int inact) +{ + if (!act && !inact) + return; + + if (size < 1024) + printf("Statistics:: BUCKET %uB size, %u active, %u inactive\n", size, act, inact); + else if (size < 1024 * 1024) + printf("Statistics:: BUCKET %uKB size, %u active, %u inactive\n", size / 1024, act, inact); + else + printf("Statistics:: BUCKET %uMB size, %u active, %u inactive\n", size / (1024 * 1024), act, inact); +} + +int +main(int argc, char **argv) +{ + mpool_t *mp; + void *addr; + int i; + u_long curr; + + for (i = 0; i < 3; i++) { + addr = malloc(4000); + printf("addr=%p\n", addr); + free(addr); + } + + mp = mpool_init(0); + if (!mp) { + printf("Error:: #%d - %s\n", sess_GetErrno(), sess_GetError()); + return 1; + } + /* + mpool_getquota(mp, &curr, NULL); + printf("___current=%lu\n", curr); + */ + + for (i = 0; i < 3; i++) { + addr = mpool_malloc(mp, 4000, "mdaaa 4000"); + if (!addr) { + printf("Error:: #%d - %s\n", sess_GetErrno(), sess_GetError()); + mpool_destroy(&mp); + return 2; + } + printf("addr=%p chkaddr=%d addr_size=%d\n", addr, mpool_chkaddr(addr), mpool_getsizebyaddr(addr)); + + strlcpy(addr, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\ndddddd\n", + mpool_getsizebyaddr(addr)); +// mpool_free(mp, addr, 0); + } + + mpool_getquota(mp, &curr, NULL); + printf("___current=%lu\n", curr); + + printf("0) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n", + mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free, + mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free); + mpool_statistics(mp, show); + + addr = mpool_realloc(mp, addr, 5010, "|||||||||||||"); + if (!addr) + printf("Error:: #%d - %s\n", sess_GetErrno(), sess_GetError()); + mpool_getquota(mp, &curr, NULL); + printf("addr=%p_current=%lu\n", addr, curr); + + printf("1) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n", + mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free, + mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free); + mpool_statistics(mp, show); + + + if (addr) + mpool_free(mp, addr, 0); + + printf("2) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n", + mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free, + mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free); + mpool_statistics(mp, show); + + mpool_purge(mp, 0); + + mpool_getquota(mp, &curr, NULL); + printf("___current=%lu\n", curr); + + printf("3) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n", + mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free, + mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free); + mpool_statistics(mp, show); + + addr = mpool_malloc(mp, 4000, "mdaaa 4000"); + if (!addr) { + printf("Error:: #%d - %s\n", sess_GetErrno(), sess_GetError()); + mpool_destroy(&mp); + return 2; + } + printf("addr=%p chkaddr=%d addr_size=%d\n", addr, mpool_chkaddr(addr), mpool_getsizebyaddr(addr)); + mpool_free(mp, addr, 0); + + printf("4) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n", + mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free, + mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free); + mpool_statistics(mp, show); + mpool_destroy(&mp); + return 0; +}