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);