You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2021/07/04 21:53:55 UTC

[incubator-nuttx] 03/05: arch/sim: Implement malloc_size for the custom heap

This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 8ebf9c92cf244116d9c9cd6e12b4427771ea9ec0
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Jun 27 04:10:56 2021 +0800

    arch/sim: Implement malloc_size for the custom heap
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 arch/sim/src/nuttx-names.in      |  5 +++--
 arch/sim/src/sim/up_heap.c       |  9 +++++++++
 arch/sim/src/sim/up_hostmemory.c | 15 +++++++++++++++
 arch/sim/src/sim/up_internal.h   |  1 +
 4 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/arch/sim/src/nuttx-names.in b/arch/sim/src/nuttx-names.in
index 66b0903..9d405fd 100644
--- a/arch/sim/src/nuttx-names.in
+++ b/arch/sim/src/nuttx-names.in
@@ -50,8 +50,8 @@ NXSYMBOLS(ioctl)
 NXSYMBOLS(longjmp)
 NXSYMBOLS(lseek)
 NXSYMBOLS(malloc)
-NXSYMBOLS(mallinfo)
-NXSYMBOLS(memalign)
+NXSYMBOLS(malloc_size)
+NXSYMBOLS(malloc_usable_size)
 NXSYMBOLS(memcpy)
 NXSYMBOLS(mkdir)
 NXSYMBOLS(mmap)
@@ -60,6 +60,7 @@ NXSYMBOLS(open)
 NXSYMBOLS(opendir)
 NXSYMBOLS(perror)
 NXSYMBOLS(poll)
+NXSYMBOLS(posix_memalign)
 NXSYMBOLS(pthread_cond_destroy)
 NXSYMBOLS(pthread_cond_init)
 NXSYMBOLS(pthread_cond_signal)
diff --git a/arch/sim/src/sim/up_heap.c b/arch/sim/src/sim/up_heap.c
index 1963952..b1ccc11 100644
--- a/arch/sim/src/sim/up_heap.c
+++ b/arch/sim/src/sim/up_heap.c
@@ -447,6 +447,15 @@ void mm_checkcorruption(FAR struct mm_heap_s *heap)
 #endif /* CONFIG_DEBUG_MM */
 
 /****************************************************************************
+ * Name: malloc_size
+ ****************************************************************************/
+
+size_t malloc_size(FAR void *mem)
+{
+  return host_malloc_size(mem);
+}
+
+/****************************************************************************
  * Name: up_allocate_heap
  *
  * Description:
diff --git a/arch/sim/src/sim/up_hostmemory.c b/arch/sim/src/sim/up_hostmemory.c
index 88bc3d1..f444011 100644
--- a/arch/sim/src/sim/up_hostmemory.c
+++ b/arch/sim/src/sim/up_hostmemory.c
@@ -31,6 +31,12 @@
 #include <sys/mman.h>
 #include <sys/stat.h>
 
+#ifdef __APPLE__
+#include <malloc/malloc.h>
+#else
+#include <malloc.h>
+#endif
+
 #include "up_internal.h"
 
 /****************************************************************************
@@ -118,6 +124,15 @@ void host_free_shmem(void *mem)
   munmap(mem, 0);
 }
 
+size_t host_malloc_size(void *mem)
+{
+#ifdef __APPLE__
+  return malloc_size(mem);
+#else
+  return malloc_usable_size(mem);
+#endif
+}
+
 void *host_memalign(size_t alignment, size_t size)
 {
   void *p;
diff --git a/arch/sim/src/sim/up_internal.h b/arch/sim/src/sim/up_internal.h
index 4ad4d0f..43c8913 100644
--- a/arch/sim/src/sim/up_internal.h
+++ b/arch/sim/src/sim/up_internal.h
@@ -144,6 +144,7 @@ void *host_alloc_heap(size_t sz);
 void *host_alloc_shmem(const char *name, size_t size, int master);
 void  host_free_shmem(void *mem);
 
+size_t host_malloc_size(void *mem);
 void *host_memalign(size_t alignment, size_t size);
 void host_free(void *mem);
 void *host_realloc(void *oldmem, size_t size);