diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-01-07 12:05:37 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-01-26 15:29:36 +0100 |
commit | 30c71c3a69192055c6a1441dd9d2118971375fc2 (patch) | |
tree | 8239b021b621a7f7c45d45aad81c61f445c04bcf | |
parent | cpucounter: Increase conversion accuracy (diff) | |
download | rtems-30c71c3a69192055c6a1441dd9d2118971375fc2.tar.bz2 |
heap: Fix _Heap_Area_overhead()
The first block must be a proper block. Account for this in
_Heap_Area_overhead().
-rw-r--r-- | cpukit/include/rtems/score/heap.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/cpukit/include/rtems/score/heap.h b/cpukit/include/rtems/score/heap.h index ccc2f5c0fe..62a81cbad9 100644 --- a/cpukit/include/rtems/score/heap.h +++ b/cpukit/include/rtems/score/heap.h @@ -455,7 +455,13 @@ RTEMS_INLINE_ROUTINE uintptr_t _Heap_Area_overhead( page_size = CPU_ALIGNMENT; } - return 2 * (page_size - 1) + HEAP_BLOCK_HEADER_SIZE; + /* + * Account for a potential alignment of the area begin address to a page + * boundary, the first block, and the last block. The last block consists + * only of a block header. + */ + return page_size - 1 + _Heap_Min_block_size( page_size ) + + HEAP_BLOCK_HEADER_SIZE; } /** |