Annotation of embedaddon/quagga/tests/test-memory.c, revision 1.1.1.1

1.1       misho       1: #include <zebra.h>
                      2: #include <memory.h>
                      3: 
                      4: /* Memory torture tests
                      5:  *
                      6:  * Tests below are generic but comments are focused on interaction with
                      7:  * Paul's proposed memory 'quick' cache, which may never be included in
                      8:  * CVS
                      9:  */
                     10: 
                     11: struct thread_master *master;
                     12: 
                     13: #if 0 /* set to 1 to use system alloc directly */
                     14: #undef XMALLOC
                     15: #undef XCALLOC
                     16: #undef XREALLOC
                     17: #undef XFREE
                     18: #define XMALLOC(T,S) malloc((S))
                     19: #define XCALLOC(T,S) calloc(1, (S))
                     20: #define XREALLOC(T,P,S) realloc((P),(S))
                     21: #define XFREE(T,P) free((P))
                     22: #endif
                     23: 
                     24: #define TIMES 10
                     25: 
                     26: int
                     27: main(int argc, char **argv)
                     28: {
                     29:   void *a[10];
                     30:   int i;
                     31: 
                     32:   printf ("malloc x, malloc x, free, malloc x, free free\n\n");
                     33:   /* simple case, test cache */
                     34:   for (i = 0; i < TIMES; i++)
                     35:     {
                     36:       a[0] = XMALLOC (MTYPE_VTY, 1024);
                     37:       memset (a[0], 1, 1024);
                     38:       a[1] = XMALLOC (MTYPE_VTY, 1024);
                     39:       memset (a[1], 1, 1024);
                     40:       XFREE(MTYPE_VTY, a[0]); /* should go to cache */
                     41:       a[0] = XMALLOC (MTYPE_VTY, 1024); /* should be satisfied from cache */
                     42:       XFREE(MTYPE_VTY, a[0]);
                     43:       XFREE(MTYPE_VTY, a[1]);
                     44:     }
                     45:   
                     46:   printf ("malloc x, malloc y, free x, malloc y, free free\n\n");
                     47:   /* cache should go invalid, valid, invalid, etc.. */
                     48:   for (i = 0; i < TIMES; i++)
                     49:     {
                     50:       a[0] = XMALLOC (MTYPE_VTY, 512);
                     51:       memset (a[0], 1, 512);
                     52:       a[1] = XMALLOC (MTYPE_VTY, 1024); /* invalidate cache */
                     53:       memset (a[1], 1, 1024);
                     54:       XFREE(MTYPE_VTY, a[0]);
                     55:       a[0] = XMALLOC (MTYPE_VTY, 1024);
                     56:       XFREE(MTYPE_VTY, a[0]);
                     57:       XFREE(MTYPE_VTY, a[1]);
                     58:       /* cache should become valid again on next request */
                     59:     }
                     60: 
                     61:   printf ("calloc\n\n");
                     62:   /* test calloc */
                     63:   for (i = 0; i < TIMES; i++)
                     64:     {
                     65:       a[0] = XCALLOC (MTYPE_VTY, 1024);
                     66:       memset (a[0], 1, 1024);
                     67:       a[1] = XCALLOC (MTYPE_VTY, 512); /* invalidate cache */
                     68:       memset (a[1], 1, 512);
                     69:       XFREE(MTYPE_VTY, a[1]);
                     70:       XFREE(MTYPE_VTY, a[0]);
                     71:       /* alloc == 0, cache can become valid again on next request */
                     72:     }
                     73:   
                     74:   printf ("calloc and realloc\n\n");
                     75:   /* check calloc + realloc */
                     76:   for (i = 0; i < TIMES; i++)
                     77:     {
                     78:       printf ("calloc a0 1024\n");
                     79:       a[0] = XCALLOC (MTYPE_VTY, 1024);
                     80:       memset (a[0], 1, 1024/2);
                     81:       
                     82:       printf ("calloc 1 1024\n");
                     83:       a[1] = XCALLOC (MTYPE_VTY, 1024);
                     84:       memset (a[1], 1, 1024/2);
                     85:       
                     86:       printf ("realloc 0 1024\n");
                     87:       a[3] = XREALLOC (MTYPE_VTY, a[0], 2048); /* invalidate cache */
                     88:       if (a[3] != NULL)
                     89:         a[0] = a[3];
                     90:       memset (a[0], 1, 1024);
                     91:       
                     92:       printf ("calloc 2 512\n");
                     93:       a[2] = XCALLOC (MTYPE_VTY, 512);
                     94:       memset (a[2], 1, 512);
                     95:       
                     96:       printf ("free 1 0 2\n");
                     97:       XFREE(MTYPE_VTY, a[1]);
                     98:       XFREE(MTYPE_VTY, a[0]);
                     99:       XFREE(MTYPE_VTY, a[2]);
                    100:       /* alloc == 0, cache valid next request */
                    101:     }
                    102:   return 0;
                    103: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>