add bit more description and ticket # in commit msg On Sun, Feb 13, 2022 at 8:14 PM zack leung <zakthertems...@gmail.com> wrote: > > --- > cpukit/include/rtems/libcsupport.h | 8 ++++++- > cpukit/libcsupport/src/mallocusablesize.c | 28 +++++++++++++++++++++++ > spec/build/cpukit/librtemscpu.yml | 1 + > testsuites/libtests/malloctest/init.c | 15 +++++++++++- > 4 files changed, 50 insertions(+), 2 deletions(-) > create mode 100644 cpukit/libcsupport/src/mallocusablesize.c > > diff --git a/cpukit/include/rtems/libcsupport.h > b/cpukit/include/rtems/libcsupport.h > index f4be4cfc9a..1fe0f6735f 100644 > --- a/cpukit/include/rtems/libcsupport.h > +++ b/cpukit/include/rtems/libcsupport.h > @@ -73,7 +73,12 @@ extern size_t malloc_free_space(void); > * Find amount of free heap remaining. > */ > extern int malloc_info(Heap_Information_block *the_info); > - > +/** > + * @brief Get malloc status information. this brief should probably just be the below statement?
> + * > + * Find the usable size of the block of memory . space before . > + */ > +extern size_t malloc_usable_size(void *ptr); > /* > * Prototypes required to install newlib reentrancy user extension > */ > @@ -185,6 +190,7 @@ bool rtems_resource_snapshot_equal( > */ > bool rtems_resource_snapshot_check(const rtems_resource_snapshot *snapshot); > > + avoid spurious whitespace changes > /** @} */ > > #ifdef __cplusplus > diff --git a/cpukit/libcsupport/src/mallocusablesize.c > b/cpukit/libcsupport/src/mallocusablesize.c > new file mode 100644 > index 0000000000..10114182a6 > --- /dev/null > +++ b/cpukit/libcsupport/src/mallocusablesize.c > @@ -0,0 +1,28 @@ > +/* > + * COPYRIGHT (c) 1989-2010. > + * On-Line Applications Research Corporation (OAR). Is this your code/copyright? > + * > + * The license and distribution terms for this file may be > + * found in the file LICENSE in this distribution or at > + * http://www.rtems.org/license/LICENSE. > + */ Prefer 2-bsd > +#ifdef HAVE_CONFIG_H > +#include "config.h" > +#endif > + > +#include <rtems/libcsupport.h> > +#include <rtems/malloc.h> > +#include <rtems/score/heapimpl.h> > + > +Heap_Control *heap_ptr; why a global variable here? > +size_t malloc_usable_size(void *ptr) { > + uintptr_t size; I'd prefer a blank space after the variables. I don't know if that is part of our conventions. > + if (ptr == NULL) { > + return 0; > + } > + > + heap_ptr = malloc_get_heap_pointer(); > + _Heap_Size_of_alloc_area(heap_ptr, ptr, &size); > + > + return size; type mismatch between size_t and uintptr_t > +} > diff --git a/spec/build/cpukit/librtemscpu.yml > b/spec/build/cpukit/librtemscpu.yml > index 7d6dbae0db..5902008c94 100644 > --- a/spec/build/cpukit/librtemscpu.yml > +++ b/spec/build/cpukit/librtemscpu.yml > @@ -670,6 +670,7 @@ source: > - cpukit/libcsupport/src/lseek.c > - cpukit/libcsupport/src/lstat.c > - cpukit/libcsupport/src/malloc.c > +- cpukit/libcsupport/src/mallocusablesize.c > - cpukit/libcsupport/src/malloc_deferred.c > - cpukit/libcsupport/src/malloc_dirtier.c > - cpukit/libcsupport/src/malloc_walk.c > diff --git a/testsuites/libtests/malloctest/init.c > b/testsuites/libtests/malloctest/init.c > index a33764177d..2202546719 100644 > --- a/testsuites/libtests/malloctest/init.c > +++ b/testsuites/libtests/malloctest/init.c > @@ -1362,6 +1362,18 @@ static void test_alloc_zero_size(void) > rtems_test_assert( p == NULL ); > rtems_test_assert( errno == -1 ); > } > +static void test_usablesize(void) > +{ > + int * a = malloc(sizeof( int )*100); > + int alloc_size=sizeof( int ) *100 ; > + rtems_test_assert( malloc_usable_size(a) <= alloc_size + > CPU_HEAP_ALIGNMENT); > + free(a); > + > + char * b = malloc(sizeof(char)*100); > + int alloc_size2=sizeof(char) *100 ; > + rtems_test_assert( malloc_usable_size ( b ) <= alloc_size2 + > CPU_HEAP_ALIGNMENT); > + free(b); > +} > > rtems_task Init( > rtems_task_argument argument > @@ -1405,6 +1417,7 @@ rtems_task Init( > test_protected_heap_info(); > test_rtems_heap_allocate_aligned_with_boundary(); > test_rtems_malloc(); > + test_usablesize(); > test_rtems_calloc(); > test_greedy_allocate(); > test_alloc_zero_size(); > @@ -1524,4 +1537,4 @@ RTEMS_SYSINIT_ITEM( > test_early_malloc, > RTEMS_SYSINIT_INITIAL_EXTENSIONS, > RTEMS_SYSINIT_ORDER_FIRST > -); > +); whitespace change > \ No newline at end of file > -- > 2.35.1 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel