From 8b18037f203b2b2dfceae4fb46e7eca388f229ad Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 28 Apr 2022 08:56:59 +0200 Subject: heap: Fix heap statistics with protection enabled Close #4644. --- cpukit/include/rtems/score/heapimpl.h | 10 +--------- cpukit/score/src/heapallocate.c | 9 +++++++++ 2 files changed, 10 insertions(+), 9 deletions(-) (limited to 'cpukit') diff --git a/cpukit/include/rtems/score/heapimpl.h b/cpukit/include/rtems/score/heapimpl.h index e6b6feb800..2b1ef21c83 100644 --- a/cpukit/include/rtems/score/heapimpl.h +++ b/cpukit/include/rtems/score/heapimpl.h @@ -427,15 +427,7 @@ Heap_Block *_Heap_Block_allocate( (*heap->Protection.block_error)( heap, block, reason ); } - 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 ); - } + void _Heap_Protection_free_all_delayed_blocks( Heap_Control *heap ); #endif /** diff --git a/cpukit/score/src/heapallocate.c b/cpukit/score/src/heapallocate.c index 162a5f8933..049a1279b1 100644 --- a/cpukit/score/src/heapallocate.c +++ b/cpukit/score/src/heapallocate.c @@ -93,6 +93,15 @@ return search_again; } + + void _Heap_Protection_free_all_delayed_blocks( Heap_Control *heap ) + { + bool search_again; + + do { + search_again = _Heap_Protection_free_delayed_blocks( heap, 0 ); + } while ( search_again ); + } #endif #ifdef RTEMS_HEAP_DEBUG -- cgit v1.2.3