summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-01 18:18:26 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-01 18:18:26 +0000
commitfb29a8de4ae2114009d861a1a3cdd762d1ec19e8 (patch)
tree8894ac538f8b5db316212f1356996b4a117ea408
parent2009-08-01 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-fb29a8de4ae2114009d861a1a3cdd762d1ec19e8.tar.bz2
2009-08-01 Joel Sherrill <joel.sherrill@OARcorp.com>
* score/inline/rtems/score/heap.inl, score/src/heapresizeblock.c: Simplify routine.
Diffstat (limited to '')
-rw-r--r--cpukit/ChangeLog5
-rw-r--r--cpukit/score/inline/rtems/score/heap.inl9
-rw-r--r--cpukit/score/src/heapresizeblock.c5
3 files changed, 16 insertions, 3 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index e280454167..8db914998d 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-01 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ * score/inline/rtems/score/heap.inl, score/src/heapresizeblock.c:
+ Simplify routine.
+
2009-08-01 Joel Sherrill <joel.sherrill@oarcorp.com>
* score/inline/rtems/score/heap.inl, score/src/heapwalk.c: Do not
diff --git a/cpukit/score/inline/rtems/score/heap.inl b/cpukit/score/inline/rtems/score/heap.inl
index b8bb124423..f080ed7fdc 100644
--- a/cpukit/score/inline/rtems/score/heap.inl
+++ b/cpukit/score/inline/rtems/score/heap.inl
@@ -238,10 +238,13 @@ RTEMS_INLINE_ROUTINE void _Heap_Align_up_uptr (
uint32_t alignment
)
{
+ _H_uptr_t remainder;
_H_uptr_t v = *value;
- uint32_t a = alignment;
- _H_uptr_t r = v % a;
- *value = r ? v - r + a : v;
+
+ remainder = v % alignment;
+
+ if ( remainder )
+ *value = v - remainder + alignment;
}
/**
diff --git a/cpukit/score/src/heapresizeblock.c b/cpukit/score/src/heapresizeblock.c
index c744d4ff88..0c82b0e1d2 100644
--- a/cpukit/score/src/heapresizeblock.c
+++ b/cpukit/score/src/heapresizeblock.c
@@ -117,6 +117,7 @@ Heap_Resize_status _Heap_Resize_block(
uint32_t free_block_size = old_user_size - size;
_Heap_Align_down(&free_block_size, page_size);
+printk( "free=%d\n", free_block_size );
if (free_block_size > 0) {
/* To free some memory the block should be shortened so that it can
@@ -125,6 +126,8 @@ Heap_Resize_status _Heap_Resize_block(
uint32_t new_block_size = old_block_size - free_block_size;
+printk( "new=%d min=%d hit=%s\n", new_block_size, min_block_size,
+ ((new_block_size < min_block_size) ? "yes" : "no") );
if (new_block_size < min_block_size) {
uint32_t delta = min_block_size - new_block_size;
_HAssert(free_block_size >= delta);
@@ -141,6 +144,8 @@ Heap_Resize_status _Heap_Resize_block(
_HAssert(_Heap_Is_aligned(new_block_size, page_size));
_HAssert(_Heap_Is_aligned(free_block_size, page_size));
+printk( "next_is_used=%d free=%d min=%d hit=%s\n", next_is_used, free_block_size, min_block_size,
+ ((next_is_used) && (free_block_size <= min_block_size) ? "yes" : "no") );
if (!next_is_used) {
/* Extend the next block to the low addresses by 'free_block_size' */
Heap_Block *const new_next_block =