File:
[ELWIX - Embedded LightWeight unIX -] /
libelwix /
example /
test_mem.c
Revision
1.1.1.1 (vendor branch):
download - view:
text,
annotated -
select for diffs -
revision graph
Thu Jan 17 10:05:35 2013 UTC (11 years, 8 months ago) by
misho
Branches:
misho
CVS tags:
elwix1_9,
elwix1_8,
elwix1_7,
elwix1_6,
elwix1_5,
elwix1_4,
elwix1_3,
elwix1_2,
elwix1_1,
ELWIX1_8,
ELWIX1_7,
ELWIX1_6,
ELWIX1_5,
ELWIX1_4,
ELWIX1_3,
ELWIX1_2,
ELWIX1_1,
ELWIX1_0
ELWIX core library
#include <stdio.h>
#include <stdlib.h>
#include <elwix.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", elwix_GetErrno(), elwix_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", elwix_GetErrno(), elwix_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", elwix_GetErrno(), elwix_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", elwix_GetErrno(), elwix_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>