You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/03/31 11:50:31 UTC
[incubator-nuttx] branch master updated: mm_heap: heapsize align with MM_MIN_CHUNK.
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 69e6974 mm_heap: heapsize align with MM_MIN_CHUNK.
69e6974 is described below
commit 69e69740b5f578e035befc762538b282d91ed1ba
Author: wangbowen6 <wa...@xiaomi.com>
AuthorDate: Mon Feb 21 18:22:40 2022 +0800
mm_heap: heapsize align with MM_MIN_CHUNK.
Signed-off-by: wangbowen6 <wa...@xiaomi.com>
---
mm/mm_heap/mm.h | 4 ++++
mm/mm_heap/mm_initialize.c | 12 ++++++------
mm/mm_heap/mm_mallinfo.c | 5 ++++-
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/mm/mm_heap/mm.h b/mm/mm_heap/mm.h
index 9ea235e..5abe074 100644
--- a/mm/mm_heap/mm.h
+++ b/mm/mm_heap/mm.h
@@ -146,6 +146,10 @@
#define SIZEOF_MM_FREENODE sizeof(struct mm_freenode_s)
+/* What is the size of the start/end node? */
+
+#define SIZEOF_MM_STARTENDNODE MM_MIN_CHUNK
+
/****************************************************************************
* Public Types
****************************************************************************/
diff --git a/mm/mm_heap/mm_initialize.c b/mm/mm_heap/mm_initialize.c
index e32c63c..06fd9e6 100644
--- a/mm/mm_heap/mm_initialize.c
+++ b/mm/mm_heap/mm_initialize.c
@@ -118,15 +118,15 @@ void mm_addregion(FAR struct mm_heap_s *heap, FAR void *heapstart,
heap->mm_heapstart[IDX] = (FAR struct mm_allocnode_s *)
heapbase;
MM_ADD_BACKTRACE(heap, heap->mm_heapstart[IDX]);
- heap->mm_heapstart[IDX]->size = SIZEOF_MM_ALLOCNODE;
+ heap->mm_heapstart[IDX]->size = SIZEOF_MM_STARTENDNODE;
heap->mm_heapstart[IDX]->preceding = MM_ALLOC_BIT;
node = (FAR struct mm_freenode_s *)
- (heapbase + SIZEOF_MM_ALLOCNODE);
- node->size = heapsize - 2*SIZEOF_MM_ALLOCNODE;
- node->preceding = SIZEOF_MM_ALLOCNODE;
+ (heapbase + SIZEOF_MM_STARTENDNODE);
+ node->size = heapsize - 2*SIZEOF_MM_STARTENDNODE;
+ node->preceding = SIZEOF_MM_STARTENDNODE;
heap->mm_heapend[IDX] = (FAR struct mm_allocnode_s *)
- (heapend - SIZEOF_MM_ALLOCNODE);
- heap->mm_heapend[IDX]->size = SIZEOF_MM_ALLOCNODE;
+ (heapend - SIZEOF_MM_STARTENDNODE);
+ heap->mm_heapend[IDX]->size = SIZEOF_MM_STARTENDNODE;
heap->mm_heapend[IDX]->preceding = node->size | MM_ALLOC_BIT;
MM_ADD_BACKTRACE(heap, heap->mm_heapend[IDX]);
diff --git a/mm/mm_heap/mm_mallinfo.c b/mm/mm_heap/mm_mallinfo.c
index 7ecdc03..3144e48 100644
--- a/mm/mm_heap/mm_mallinfo.c
+++ b/mm/mm_heap/mm_mallinfo.c
@@ -121,7 +121,10 @@ int mm_mallinfo(FAR struct mm_heap_s *heap, FAR struct mallinfo *info)
mm_foreach(heap, mallinfo_handler, info);
info->arena = heap->mm_heapsize;
- info->uordblks += region * SIZEOF_MM_ALLOCNODE; /* account for the tail node */
+
+ /* Account for the tail node */
+
+ info->uordblks += region * SIZEOF_MM_STARTENDNODE;
DEBUGASSERT(info->uordblks + info->fordblks == heap->mm_heapsize);