summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-09-19 21:43:12 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-09-19 21:43:12 +0000
commit91a3554dedcf9b1495c15ef6af69bf2d940a5d80 (patch)
tree9fb5839796274db1492a45072ea91685d9698803 /cpukit/score
parent84ee59f575a4111bc53fba8c7655546b8c129441 (diff)
downloadrtems-91a3554dedcf9b1495c15ef6af69bf2d940a5d80.tar.bz2
Modifications from Tony Bennett accepted to return aligned block.
Diffstat (limited to '')
-rw-r--r--cpukit/score/include/rtems/score/heap.h10
-rw-r--r--cpukit/score/inline/rtems/score/heap.inl16
-rw-r--r--cpukit/score/macros/rtems/score/heap.inl12
3 files changed, 38 insertions, 0 deletions
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
@@ -94,6 +94,22 @@ STATIC INLINE Heap_Block *_Heap_Block_at(
/*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
@@ -70,6 +70,18 @@
/*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
*/