This is an automated email from the ASF dual-hosted git repository. masayuki 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 75bfa45 mm: Add kmm_malloc_size and mm_malloc_size 75bfa45 is described below commit 75bfa4584c3d571fe751f4dc14bc4cb2b384f5d5 Author: Xiang Xiao <xiaoxi...@xiaomi.com> AuthorDate: Wed Jun 30 20:33:29 2021 -0700 mm: Add kmm_malloc_size and mm_malloc_size make malloc_size implementation align with malloc Signed-off-by: Xiang Xiao <xiaoxi...@xiaomi.com> Change-Id: I8d7781925f06e58a880437a16569dccbfd2ea035 --- arch/sim/src/sim/up_heap.c | 2 +- include/nuttx/kmalloc.h | 2 + include/nuttx/lib/lib.h | 44 ++++++++++++---------- include/nuttx/mm/mm.h | 10 +++++ mm/kmm_heap/Make.defs | 2 +- .../kmm_malloc_size.c} | 31 +++------------ mm/mm_heap/mm_malloc_size.c | 3 +- mm/umm_heap/Make.defs | 2 +- .../umm_malloc_size.c} | 25 +----------- 9 files changed, 48 insertions(+), 73 deletions(-) diff --git a/arch/sim/src/sim/up_heap.c b/arch/sim/src/sim/up_heap.c index 5192728..decc534 100644 --- a/arch/sim/src/sim/up_heap.c +++ b/arch/sim/src/sim/up_heap.c @@ -413,7 +413,7 @@ void mm_checkcorruption(FAR struct mm_heap_s *heap) * Name: malloc_size ****************************************************************************/ -size_t malloc_size(FAR void *mem) +size_t mm_malloc_size(FAR void *mem) { return host_malloc_size(mem); } diff --git a/include/nuttx/kmalloc.h b/include/nuttx/kmalloc.h index d75e845..9ea6916 100644 --- a/include/nuttx/kmalloc.h +++ b/include/nuttx/kmalloc.h @@ -73,6 +73,7 @@ extern "C" #define kumm_calloc(n,s) calloc(n,s); #define kumm_malloc(s) malloc(s) +#define kumm_malloc_size(p) malloc_size(p) #define kumm_zalloc(s) zalloc(s) #define kumm_realloc(p,s) realloc(p,s) #define kumm_memalign(a,s) memalign(a,s) @@ -92,6 +93,7 @@ extern "C" # define kmm_calloc(n,s) calloc(n,s); # define kmm_malloc(s) malloc(s) +# define kmm_malloc_size(p) malloc_size(p) # define kmm_zalloc(s) zalloc(s) # define kmm_realloc(p,s) realloc(p,s) # define kmm_memalign(a,s) memalign(a,s) diff --git a/include/nuttx/lib/lib.h b/include/nuttx/lib/lib.h index 51c71ec..2b2e1f6 100644 --- a/include/nuttx/lib/lib.h +++ b/include/nuttx/lib/lib.h @@ -45,37 +45,41 @@ /* Domain-specific allocations */ -# define lib_malloc(s) kmm_malloc(s) -# define lib_zalloc(s) kmm_zalloc(s) -# define lib_realloc(p,s) kmm_realloc(p,s) -# define lib_memalign(p,s) kmm_memalign(p,s) -# define lib_free(p) kmm_free(p) +# define lib_malloc(s) kmm_malloc(s) +# define lib_malloc_size(p) kmm_malloc_size(p) +# define lib_zalloc(s) kmm_zalloc(s) +# define lib_realloc(p,s) kmm_realloc(p,s) +# define lib_memalign(p,s) kmm_memalign(p,s) +# define lib_free(p) kmm_free(p) /* User-accessible allocations */ -# define lib_umalloc(s) kumm_malloc(s) -# define lib_uzalloc(s) kumm_zalloc(s) -# define lib_urealloc(p,s) kumm_realloc(p,s) -# define lib_umemalign(p,s) kumm_memalign(p,s) -# define lib_ufree(p) kumm_free(p) +# define lib_umalloc(s) kumm_malloc(s) +# define lib_umalloc_size(p) kumm_malloc_size(p) +# define lib_uzalloc(s) kumm_zalloc(s) +# define lib_urealloc(p,s) kumm_realloc(p,s) +# define lib_umemalign(p,s) kumm_memalign(p,s) +# define lib_ufree(p) kumm_free(p) #else /* Domain-specific allocations */ -# define lib_malloc(s) malloc(s) -# define lib_zalloc(s) zalloc(s) -# define lib_realloc(p,s) realloc(p,s) -# define lib_memalign(p,s) memalign(p,s) -# define lib_free(p) free(p) +# define lib_malloc(s) malloc(s) +# define lib_malloc_size(p) malloc_size(p) +# define lib_zalloc(s) zalloc(s) +# define lib_realloc(p,s) realloc(p,s) +# define lib_memalign(p,s) memalign(p,s) +# define lib_free(p) free(p) /* User-accessible allocations */ -# define lib_umalloc(s) malloc(s) -# define lib_uzalloc(s) zalloc(s) -# define lib_urealloc(p,s) realloc(p,s) -# define lib_umemalign(p,s) memalign(p,s) -# define lib_ufree(p) free(p) +# define lib_umalloc(s) malloc(s) +# define lib_umalloc_size(p) malloc_size(p) +# define lib_uzalloc(s) zalloc(s) +# define lib_urealloc(p,s) realloc(p,s) +# define lib_umemalign(p,s) memalign(p,s) +# define lib_ufree(p) free(p) #endif diff --git a/include/nuttx/mm/mm.h b/include/nuttx/mm/mm.h index 872c781..eb5ffd9 100644 --- a/include/nuttx/mm/mm.h +++ b/include/nuttx/mm/mm.h @@ -193,6 +193,16 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size); FAR void *kmm_malloc(size_t size); #endif +/* Functions contained in mm_malloc_size.c **********************************/ + +size_t mm_malloc_size(FAR void *mem); + +/* Functions contained in kmm_malloc_size.c *********************************/ + +#ifdef CONFIG_MM_KERNEL_HEAP +size_t kmm_malloc_size(FAR void *mem); +#endif + /* Functions contained in mm_free.c *****************************************/ void mm_free(FAR struct mm_heap_s *heap, FAR void *mem); diff --git a/mm/kmm_heap/Make.defs b/mm/kmm_heap/Make.defs index 8fcf7fc..135832f 100644 --- a/mm/kmm_heap/Make.defs +++ b/mm/kmm_heap/Make.defs @@ -22,7 +22,7 @@ ifeq ($(CONFIG_MM_KERNEL_HEAP),y) -CSRCS += kmm_initialize.c kmm_addregion.c +CSRCS += kmm_initialize.c kmm_addregion.c kmm_malloc_size.c CSRCS += kmm_brkaddr.c kmm_calloc.c kmm_extend.c kmm_free.c kmm_mallinfo.c CSRCS += kmm_malloc.c kmm_memalign.c kmm_realloc.c kmm_zalloc.c kmm_heapmember.c diff --git a/mm/mm_heap/mm_malloc_size.c b/mm/kmm_heap/kmm_malloc_size.c similarity index 71% copy from mm/mm_heap/mm_malloc_size.c copy to mm/kmm_heap/kmm_malloc_size.c index 40bc7b2..6d20045 100644 --- a/mm/mm_heap/mm_malloc_size.c +++ b/mm/kmm_heap/kmm_malloc_size.c @@ -1,5 +1,5 @@ /**************************************************************************** - * mm/mm_heap/mm_malloc_size.c + * mm/kmm_heap/kmm_malloc_size.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -24,36 +24,17 @@ #include <nuttx/config.h> -#include <assert.h> -#include <debug.h> -#include <malloc.h> - #include <nuttx/mm/mm.h> -#include "mm_heap/mm.h" +#ifdef CONFIG_MM_KERNEL_HEAP /**************************************************************************** * Public Functions ****************************************************************************/ -size_t malloc_size(FAR void *mem) +size_t kmm_malloc_size(FAR void *mem) { - FAR struct mm_freenode_s *node; - - /* Protect against attempts to query a NULL reference */ - - if (!mem) - { - return 0; - } - - /* Map the memory chunk into a free node */ - - node = (FAR struct mm_freenode_s *)((FAR char *)mem - SIZEOF_MM_ALLOCNODE); - - /* Sanity check against double-frees */ - - DEBUGASSERT(node->preceding & MM_ALLOC_BIT); - - return node->size - SIZEOF_MM_ALLOCNODE; + return mm_malloc_size(mem); } + +#endif /* CONFIG_MM_KERNEL_HEAP */ diff --git a/mm/mm_heap/mm_malloc_size.c b/mm/mm_heap/mm_malloc_size.c index 40bc7b2..98ffde6 100644 --- a/mm/mm_heap/mm_malloc_size.c +++ b/mm/mm_heap/mm_malloc_size.c @@ -26,7 +26,6 @@ #include <assert.h> #include <debug.h> -#include <malloc.h> #include <nuttx/mm/mm.h> @@ -36,7 +35,7 @@ * Public Functions ****************************************************************************/ -size_t malloc_size(FAR void *mem) +size_t mm_malloc_size(FAR void *mem) { FAR struct mm_freenode_s *node; diff --git a/mm/umm_heap/Make.defs b/mm/umm_heap/Make.defs index 1446371..c992160 100644 --- a/mm/umm_heap/Make.defs +++ b/mm/umm_heap/Make.defs @@ -20,7 +20,7 @@ # User heap allocator -CSRCS += umm_globals.c umm_initialize.c umm_addregion.c +CSRCS += umm_globals.c umm_initialize.c umm_addregion.c umm_malloc_size.c CSRCS += umm_brkaddr.c umm_calloc.c umm_extend.c umm_free.c umm_mallinfo.c CSRCS += umm_malloc.c umm_memalign.c umm_realloc.c umm_zalloc.c umm_heapmember.c diff --git a/mm/mm_heap/mm_malloc_size.c b/mm/umm_heap/umm_malloc_size.c similarity index 74% copy from mm/mm_heap/mm_malloc_size.c copy to mm/umm_heap/umm_malloc_size.c index 40bc7b2..74c0e76 100644 --- a/mm/mm_heap/mm_malloc_size.c +++ b/mm/umm_heap/umm_malloc_size.c @@ -1,5 +1,5 @@ /**************************************************************************** - * mm/mm_heap/mm_malloc_size.c + * mm/umm_heap/umm_malloc_size.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -24,36 +24,15 @@ #include <nuttx/config.h> -#include <assert.h> -#include <debug.h> #include <malloc.h> #include <nuttx/mm/mm.h> -#include "mm_heap/mm.h" - /**************************************************************************** * Public Functions ****************************************************************************/ size_t malloc_size(FAR void *mem) { - FAR struct mm_freenode_s *node; - - /* Protect against attempts to query a NULL reference */ - - if (!mem) - { - return 0; - } - - /* Map the memory chunk into a free node */ - - node = (FAR struct mm_freenode_s *)((FAR char *)mem - SIZEOF_MM_ALLOCNODE); - - /* Sanity check against double-frees */ - - DEBUGASSERT(node->preceding & MM_ALLOC_BIT); - - return node->size - SIZEOF_MM_ALLOCNODE; + return mm_malloc_size(mem); }