Annotation of libelwix/example/test_mem.c, revision 1.1.1.1
1.1 misho 1: #include <stdio.h>
2: #include <stdlib.h>
3: #include <elwix.h>
4:
5:
6: void show(u_int size, u_int act, u_int inact)
7: {
8: if (!act && !inact)
9: return;
10:
11: if (size < 1024)
12: printf("Statistics:: BUCKET %uB size, %u active, %u inactive\n", size, act, inact);
13: else if (size < 1024 * 1024)
14: printf("Statistics:: BUCKET %uKB size, %u active, %u inactive\n", size / 1024, act, inact);
15: else
16: printf("Statistics:: BUCKET %uMB size, %u active, %u inactive\n", size / (1024 * 1024), act, inact);
17: }
18:
19: int
20: main(int argc, char **argv)
21: {
22: mpool_t *mp;
23: void *addr;
24: int i;
25: u_long curr;
26:
27: for (i = 0; i < 3; i++) {
28: addr = malloc(4000);
29: printf("addr=%p\n", addr);
30: free(addr);
31: }
32:
33: mp = mpool_init(0);
34: if (!mp) {
35: printf("Error:: #%d - %s\n", elwix_GetErrno(), elwix_GetError());
36: return 1;
37: }
38: /*
39: mpool_getquota(mp, &curr, NULL);
40: printf("___current=%lu\n", curr);
41: */
42:
43: for (i = 0; i < 3; i++) {
44: addr = mpool_malloc(mp, 4000, "mdaaa 4000");
45: if (!addr) {
46: printf("Error:: #%d - %s\n", elwix_GetErrno(), elwix_GetError());
47: mpool_destroy(&mp);
48: return 2;
49: }
50: printf("addr=%p chkaddr=%d addr_size=%d\n", addr, mpool_chkaddr(addr), mpool_getsizebyaddr(addr));
51:
52: strlcpy(addr, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\ndddddd\n",
53: mpool_getsizebyaddr(addr));
54: // mpool_free(mp, addr, 0);
55: }
56:
57: mpool_getquota(mp, &curr, NULL);
58: printf("___current=%lu\n", curr);
59:
60: printf("0) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n",
61: mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free,
62: mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free);
63: mpool_statistics(mp, show);
64:
65: addr = mpool_realloc(mp, addr, 5010, "|||||||||||||");
66: if (!addr)
67: printf("Error:: #%d - %s\n", elwix_GetErrno(), elwix_GetError());
68: mpool_getquota(mp, &curr, NULL);
69: printf("addr=%p_current=%lu\n", addr, curr);
70:
71: printf("1) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n",
72: mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free,
73: mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free);
74: mpool_statistics(mp, show);
75:
76:
77: if (addr)
78: mpool_free(mp, addr, 0);
79:
80: printf("2) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n",
81: mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free,
82: mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free);
83: mpool_statistics(mp, show);
84:
85: mpool_purge(mp, 0);
86:
87: mpool_getquota(mp, &curr, NULL);
88: printf("___current=%lu\n", curr);
89:
90: printf("3) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n",
91: mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free,
92: mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free);
93: mpool_statistics(mp, show);
94:
95: addr = mpool_malloc(mp, 4000, "mdaaa 4000");
96: if (!addr) {
97: printf("Error:: #%d - %s\n", elwix_GetErrno(), elwix_GetError());
98: mpool_destroy(&mp);
99: return 2;
100: }
101: printf("addr=%p chkaddr=%d addr_size=%d\n", addr, mpool_chkaddr(addr), mpool_getsizebyaddr(addr));
102: mpool_free(mp, addr, 0);
103:
104: printf("4) calls.act=%lu calls.inact=%lu calls.free=%lu; bytes.act=%lu bytes.inact=%lu bytes.free=%lu;\n",
105: mp->pool_calls.alloc, mp->pool_calls.cache, mp->pool_calls.free,
106: mp->pool_bytes.alloc, mp->pool_bytes.cache, mp->pool_bytes.free);
107: mpool_statistics(mp, show);
108: mpool_destroy(&mp);
109: return 0;
110: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>