From 91a3554dedcf9b1495c15ef6af69bf2d940a5d80 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 19 Sep 1995 21:43:12 +0000 Subject: Modifications from Tony Bennett accepted to return aligned block. --- cpukit/score/include/rtems/score/heap.h | 10 ++++++++++ cpukit/score/inline/rtems/score/heap.inl | 16 ++++++++++++++++ cpukit/score/macros/rtems/score/heap.inl | 12 ++++++++++++ 3 files changed, 38 insertions(+) (limited to 'cpukit/score') diff --git a/cpukit/score/include/rtems/score/heap.h b/cpukit/score/include/rtems/score/heap.h index bf4a8dde6e..b0a2d57f39 100644 --- a/cpukit/score/include/rtems/score/heap.h +++ b/cpukit/score/include/rtems/score/heap.h @@ -278,6 +278,16 @@ STATIC INLINE Heap_Block *_Heap_Block_at( unsigned32 offset ); +/*PAGE + * + * _Heap_User_Block_at + * + */ + +STATIC INLINE Heap_Block *_Heap_User_Block_at( + void *base +); + /* * _Heap_Is_previous_block_free * diff --git a/cpukit/score/inline/rtems/score/heap.inl b/cpukit/score/inline/rtems/score/heap.inl index c28f1a6067..b3e04a1deb 100644 --- a/cpukit/score/inline/rtems/score/heap.inl +++ b/cpukit/score/inline/rtems/score/heap.inl @@ -92,6 +92,22 @@ STATIC INLINE Heap_Block *_Heap_Block_at( return (Heap_Block *) _Addresses_Add_offset( (void *)base, offset ); } +/*PAGE + * + * _Heap_User_Block_at + * + */ + +STATIC INLINE Heap_Block *_Heap_User_Block_at( + void *base +) +{ + unsigned32 offset; + + offset = *(((unsigned32 *) base) - 1); + return _Heap_Block_at( base, -offset + -HEAP_BLOCK_USED_OVERHEAD); +} + /*PAGE * * _Heap_Is_previous_block_free diff --git a/cpukit/score/macros/rtems/score/heap.inl b/cpukit/score/macros/rtems/score/heap.inl index 1023a77fc5..f04d69cdb6 100644 --- a/cpukit/score/macros/rtems/score/heap.inl +++ b/cpukit/score/macros/rtems/score/heap.inl @@ -68,6 +68,18 @@ ( (Heap_Block *) \ _Addresses_Add_offset( (void *)(_base), (_offset) ) ) +/*PAGE + * + * _Heap_User_Block_at + * + */ + +#define _Heap_User_Block_at( _base ) \ + _Heap_Block_at( \ + (_base), \ + -*(((unsigned32 *) (_base)) - 1) + -HEAP_BLOCK_USED_OVERHEAD \ + ) + /*PAGE * * _Heap_Is_previous_block_free -- cgit v1.2.3