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>