2008-01-31 Joel Sherrill <joel.sherrill@OARcorp.com>

* malloctest/init.c: Add new test cases per Sergei. Make some of the
	stranger cases operate directly on a freshly initialized heap. This
	should make them more reproducible.
This commit is contained in:
Joel Sherrill
2008-01-31 16:06:21 +00:00
parent 56c5cf09a5
commit f2a7fa0281
2 changed files with 44 additions and 20 deletions

View File

@@ -1,3 +1,9 @@
2008-01-31 Joel Sherrill <joel.sherrill@OARcorp.com>
* malloctest/init.c: Add new test cases per Sergei. Make some of the
stranger cases operate directly on a freshly initialized heap. This
should make them more reproducible.
2008-01-29 Joel Sherrill <joel.sherrill@OARcorp.com> 2008-01-29 Joel Sherrill <joel.sherrill@OARcorp.com>
* malloctest/init.c: Add more tests per suggestions from Sergei * malloctest/init.c: Add more tests per suggestions from Sergei

View File

@@ -11,7 +11,7 @@
* *
* Output parameters: NONE * Output parameters: NONE
* *
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -97,6 +97,21 @@ void test_realloc(void)
* Realloc with a bad pointer to force a point * Realloc with a bad pointer to force a point
*/ */
p4 = realloc( test_realloc, 32 ); p4 = realloc( test_realloc, 32 );
}
#define TEST_HEAP_SIZE 1024
uint8_t TestHeapMemory[TEST_HEAP_SIZE];
Heap_Control TestHeap;
void test_heap_init()
{
_Heap_Initialize( &TestHeap, TestHeapMemory, TEST_HEAP_SIZE, 0 );
}
void test_heap_cases_1()
{
void *p1, *p2, *p3, *p4;
uint32_t u1, u2;
Heap_Resize_status rsc;
/* /*
* Another odd case. What we are trying to do from Sergei * Another odd case. What we are trying to do from Sergei
@@ -104,26 +119,28 @@ void test_realloc(void)
* 32-bit CPU when CPU_ALIGNMENT = 4 (most targets have 8) with the * 32-bit CPU when CPU_ALIGNMENT = 4 (most targets have 8) with the
* code like this: * code like this:
*/ */
p1 = malloc(12); test_heap_init();
p2 = malloc(32); p1 = _Heap_Allocate( &TestHeap, 12 );
p3 = malloc(32); p2 = _Heap_Allocate( &TestHeap, 32 );
free(p2); p3 = _Heap_Allocate( &TestHeap, 32 );
sc = rtems_memalign(&p2, 8, 28); _Heap_Free( &TestHeap, p2 );
free(p1); p2 = _Heap_Allocate_aligned( &TestHeap, 8, 28 );
free(p2); _Heap_Free( &TestHeap, p1 );
free(p3); _Heap_Free( &TestHeap, p2 );
_Heap_Free( &TestHeap, p3 );
/*
* Odd case in resizing a block. Again test case outline per Sergei
*/
p1 = malloc(32);
p2 = malloc(8);
p3 = malloc(32);
free(p2);
p4 = realloc(p1, 42);
free(p3);
free(p4);
/*
* Odd case in resizing a block. Again test case outline per Sergei
*/
test_heap_init();
p1 = _Heap_Allocate( &TestHeap, 32 );
p2 = _Heap_Allocate( &TestHeap, 8 );
p3 = _Heap_Allocate( &TestHeap, 32 );
_Heap_Free( &TestHeap, p2 );
rsc = _Heap_Resize_block( &TestHeap, p1, 41, &u1, &u2 );
/* XXX what should we expect */
_Heap_Free( &TestHeap, p3 );
_Heap_Free( &TestHeap, p4 );
} }
/* /*
@@ -175,6 +192,7 @@ rtems_task Init(
directive_failed( status, "rtems_clock_set" ); directive_failed( status, "rtems_clock_set" );
test_realloc(); test_realloc();
test_heap_cases_1();
test_posix_memalign(); test_posix_memalign();