#include <stdio.h>
#include <aitsess.h>
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;
}
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, 4095, "|||||||||||||");
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;
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>