diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-06-21 09:16:19 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-06-21 10:26:11 +0200 |
commit | 4f1da72e7f4c89cd15437439862f2bc6085f44a3 (patch) | |
tree | b2c65100bb5ad9373fc44e369955f917c7798c44 /cpukit/score | |
parent | IMFS: Fix reference count for debug enabled (diff) | |
download | rtems-4f1da72e7f4c89cd15437439862f2bc6085f44a3.tar.bz2 |
score: _Heap_Protection_free_all_delayed_blocks()
Add and use _Heap_Protection_free_all_delayed_blocks() to prevent
test suite failures if RTEMS_DEBUG is defined.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/include/rtems/score/heap.h | 11 | ||||
-rw-r--r-- | cpukit/score/src/heapgreedy.c | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/heap.h b/cpukit/score/include/rtems/score/heap.h index 80b3fd2404..2937490896 100644 --- a/cpukit/score/include/rtems/score/heap.h +++ b/cpukit/score/include/rtems/score/heap.h @@ -734,6 +734,7 @@ Heap_Block *_Heap_Block_allocate( #define _Heap_Protection_block_initialize( heap, block ) ((void) 0) #define _Heap_Protection_block_check( heap, block ) ((void) 0) #define _Heap_Protection_block_error( heap, block ) ((void) 0) + #define _Heap_Protection_free_all_delayed_blocks( heap ) ((void) 0) #else static inline void _Heap_Protection_block_initialize( Heap_Control *heap, @@ -758,6 +759,16 @@ Heap_Block *_Heap_Block_allocate( { (*heap->Protection.block_error)( heap, block ); } + + static inline void _Heap_Protection_free_all_delayed_blocks( Heap_Control *heap ) + { + uintptr_t large = 0 + - (uintptr_t) HEAP_BLOCK_HEADER_SIZE + - (uintptr_t) HEAP_ALLOC_BONUS + - (uintptr_t) 1; + void *p = _Heap_Allocate( heap, large ); + _Heap_Free( heap, p ); + } #endif /** @} */ diff --git a/cpukit/score/src/heapgreedy.c b/cpukit/score/src/heapgreedy.c index 60696f84b4..23eb4cdd3a 100644 --- a/cpukit/score/src/heapgreedy.c +++ b/cpukit/score/src/heapgreedy.c @@ -38,6 +38,8 @@ Heap_Block *_Heap_Greedy_allocate( Heap_Block *current; size_t i; + _Heap_Protection_free_all_delayed_blocks( heap ); + for (i = 0; i < block_count; ++i) { void *next = _Heap_Allocate( heap, block_sizes [i] ); |