Any particular reason for dropping memalign_calls? Any other stats get dropped?
On Thu, Nov 27, 2014 at 7:26 AM, Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > Use the heap handler statistics instead. Add heap walk option to MALLOC > shell command. > > close #1367 > --- > cpukit/libcsupport/Makefile.am | 7 +- > cpukit/libcsupport/include/rtems/malloc.h | 63 ----------------- > cpukit/libcsupport/src/calloc.c | 5 -- > cpukit/libcsupport/src/free.c | 10 +-- > cpukit/libcsupport/src/malloc.c | 8 --- > cpukit/libcsupport/src/malloc_get_statistics.c | 36 ---------- > cpukit/libcsupport/src/malloc_initialize.c | 11 --- > cpukit/libcsupport/src/malloc_p.h | 7 -- > cpukit/libcsupport/src/malloc_report_statistics.c | 29 -------- > .../src/malloc_report_statistics_plugin.c | 59 ---------------- > cpukit/libcsupport/src/malloc_statistics_helpers.c | 77 --------------------- > cpukit/libcsupport/src/posix_memalign.c | 6 -- > cpukit/libcsupport/src/realloc.c | 4 -- > .../libcsupport/src/rtems_heap_extend_via_sbrk.c | 2 - > cpukit/libcsupport/src/rtems_memalign.c | 6 -- > cpukit/libmisc/shell/main_mallocinfo.c | 32 ++++----- > cpukit/sapi/include/confdefs.h | 13 ---- > doc/shell/memory.t | 79 > ++++++++-------------- > doc/user/conf.t | 31 --------- > testsuites/libtests/Makefile.am | 2 +- > testsuites/libtests/configure.ac | 1 - > testsuites/libtests/malloc05/Makefile.am | 21 ------ > testsuites/libtests/malloc05/init.c | 58 ---------------- > testsuites/libtests/malloc05/malloc05.doc | 19 ------ > testsuites/libtests/malloc05/malloc05.scn | 4 -- > testsuites/libtests/malloctest/task1.c | 1 - > 26 files changed, 45 insertions(+), 546 deletions(-) > delete mode 100644 cpukit/libcsupport/src/malloc_get_statistics.c > delete mode 100644 cpukit/libcsupport/src/malloc_report_statistics.c > delete mode 100644 cpukit/libcsupport/src/malloc_report_statistics_plugin.c > delete mode 100644 cpukit/libcsupport/src/malloc_statistics_helpers.c > delete mode 100644 testsuites/libtests/malloc05/Makefile.am > delete mode 100644 testsuites/libtests/malloc05/init.c > delete mode 100644 testsuites/libtests/malloc05/malloc05.doc > delete mode 100644 testsuites/libtests/malloc05/malloc05.scn > > diff --git a/cpukit/libcsupport/Makefile.am b/cpukit/libcsupport/Makefile.am > index dfa8736..1486194 100644 > --- a/cpukit/libcsupport/Makefile.am > +++ b/cpukit/libcsupport/Makefile.am > @@ -98,10 +98,9 @@ MALLOC_C_FILES = src/malloc_initialize.c src/calloc.c > src/malloc.c \ > src/realloc.c src/_calloc_r.c src/_malloc_r.c \ > src/free.c src/_free_r.c \ > src/_realloc_r.c src/mallocfreespace.c \ > - src/mallocgetheapptr.c src/mallocsetheapptr.c \ > - src/mallocinfo.c src/malloc_walk.c src/malloc_get_statistics.c \ > - src/malloc_report_statistics.c src/malloc_report_statistics_plugin.c \ > - src/malloc_statistics_helpers.c src/posix_memalign.c \ > + src/mallocgetheapptr.c src/mallocsetheapptr.c \ > + src/mallocinfo.c src/malloc_walk.c \ > + src/posix_memalign.c \ > src/rtems_memalign.c src/malloc_deferred.c \ > src/malloc_dirtier.c src/malloc_p.h src/rtems_malloc.c \ > src/rtems_heap_extend_via_sbrk.c \ > diff --git a/cpukit/libcsupport/include/rtems/malloc.h > b/cpukit/libcsupport/include/rtems/malloc.h > index 25c2ead..7c00f21 100644 > --- a/cpukit/libcsupport/include/rtems/malloc.h > +++ b/cpukit/libcsupport/include/rtems/malloc.h > @@ -48,34 +48,6 @@ void RTEMS_Malloc_Initialize( > Heap_Initialization_or_extend_handler extend > ); > > -/* > - * Malloc Statistics Structure > - */ > -typedef struct { > - uint32_t space_available; /* current size of malloc area > */ > - uint32_t malloc_calls; /* # calls to malloc */ > - uint32_t memalign_calls; /* # calls to memalign */ > - uint32_t free_calls; > - uint32_t realloc_calls; > - uint32_t calloc_calls; > - uint32_t max_depth; /* most ever malloc'd at 1 time > */ > - uintmax_t lifetime_allocated; > - uintmax_t lifetime_freed; > -} rtems_malloc_statistics_t; > - > -/* > - * Malloc statistics plugin > - */ > -typedef struct { > - void (*initialize)(void); > - void (*at_malloc)(void *); > - void (*at_free)(void *); > -} rtems_malloc_statistics_functions_t; > - > -extern rtems_malloc_statistics_functions_t > - rtems_malloc_statistics_helpers_table; > -extern rtems_malloc_statistics_functions_t *rtems_malloc_statistics_helpers; > - > extern ptrdiff_t RTEMS_Malloc_Sbrk_amount; > > static inline void rtems_heap_set_sbrk_amount( ptrdiff_t sbrk_amount ) > @@ -122,41 +94,6 @@ void rtems_malloc_dirty_memory( > ); > > /** > - * @brief Print Malloc Statistic Usage Report > - * > - * This method fills in the called provided malloc statistics area. > - * > - * @return This method returns 0 if successful and -1 on error. > - */ > -int malloc_get_statistics( > - rtems_malloc_statistics_t *stats > -); > - > -/** > - * @brief Print Malloc Statistic Usage Report > - * > - * This method prints a malloc statistics report. > - * > - * @note It uses printk to print the report. > - */ > -void malloc_report_statistics(void); > - > -/** > - * @brief Print Malloc Statistic Usage Report > - * > - * This method prints a malloc statistics report. > - * > - * @param[in] context is the context to pass to the print handler > - * @param[in] print is the print handler > - * > - * @note It uses the CALLER's routine to print the report. > - */ > -void malloc_report_statistics_with_plugin( > - void *context, > - rtems_printk_plugin_t print > -); > - > -/** > * @brief RTEMS Variation on Aligned Memory Allocation > * > * This method is a help memalign implementation which does all > diff --git a/cpukit/libcsupport/src/calloc.c b/cpukit/libcsupport/src/calloc.c > index 095b467..915ece3 100644 > --- a/cpukit/libcsupport/src/calloc.c > +++ b/cpukit/libcsupport/src/calloc.c > @@ -19,7 +19,6 @@ > #endif > > #if defined(RTEMS_NEWLIB) && !defined(HAVE_CALLOC) > -#include "malloc_p.h" > #include <stdlib.h> > #include <string.h> > > @@ -31,15 +30,11 @@ void *calloc( > char *cptr; > size_t length; > > - MSBUMP(calloc_calls, 1); > - > length = nelem * elsize; > cptr = malloc( length ); > if ( cptr ) > memset( cptr, '\0', length ); > > - MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */ > - > return cptr; > } > #endif > diff --git a/cpukit/libcsupport/src/free.c b/cpukit/libcsupport/src/free.c > index 2a7e3d9..63eb7b8 100644 > --- a/cpukit/libcsupport/src/free.c > +++ b/cpukit/libcsupport/src/free.c > @@ -24,12 +24,12 @@ > > #include <rtems/score/sysstate.h> > > +#include "malloc_p.h" > + > void free( > void *ptr > ) > { > - MSBUMP(free_calls, 1); > - > if ( !ptr ) > return; > > @@ -41,12 +41,6 @@ void free( > return; > } > > - /* > - * If configured, update the statistics > - */ > - if ( rtems_malloc_statistics_helpers ) > - (*rtems_malloc_statistics_helpers->at_free)(ptr); > - > if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) { > printk( "Program heap: free of bad pointer %p -- range %p - %p \n", > ptr, > diff --git a/cpukit/libcsupport/src/malloc.c b/cpukit/libcsupport/src/malloc.c > index 4645fdb..73203e5 100644 > --- a/cpukit/libcsupport/src/malloc.c > +++ b/cpukit/libcsupport/src/malloc.c > @@ -30,8 +30,6 @@ void *malloc( > { > void *return_this; > > - MSBUMP(malloc_calls, 1); > - > /* > * If some free's have been deferred, then do them now. > */ > @@ -71,12 +69,6 @@ void *malloc( > if ( rtems_malloc_dirty_helper ) > (*rtems_malloc_dirty_helper)( return_this, size ); > > - /* > - * If configured, update the statistics > - */ > - if ( rtems_malloc_statistics_helpers ) > - (*rtems_malloc_statistics_helpers->at_malloc)(return_this); > - > return return_this; > } > > diff --git a/cpukit/libcsupport/src/malloc_get_statistics.c > b/cpukit/libcsupport/src/malloc_get_statistics.c > deleted file mode 100644 > index a54a4c1..0000000 > --- a/cpukit/libcsupport/src/malloc_get_statistics.c > +++ /dev/null > @@ -1,36 +0,0 @@ > -/** > - * @file > - * > - * @brief Print Malloc Statistic Usage Report > - * @ingroup MallocSupport > - */ > - > -/* > - * COPYRIGHT (c) 1989-2007. > - * On-Line Applications Research Corporation (OAR). > - * > - * 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. > - */ > - > -#if HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#ifdef RTEMS_NEWLIB > -#include "malloc_p.h" > - > -int malloc_get_statistics( > - rtems_malloc_statistics_t *stats > -) > -{ > - if ( !stats ) > - return -1; > - _RTEMS_Lock_allocator(); > - *stats = rtems_malloc_statistics; > - _RTEMS_Unlock_allocator(); > - return 0; > -} > - > -#endif > diff --git a/cpukit/libcsupport/src/malloc_initialize.c > b/cpukit/libcsupport/src/malloc_initialize.c > index 75dc574..60fe2d9 100644 > --- a/cpukit/libcsupport/src/malloc_initialize.c > +++ b/cpukit/libcsupport/src/malloc_initialize.c > @@ -22,8 +22,6 @@ > #include "malloc_p.h" > > #ifdef RTEMS_NEWLIB > -rtems_malloc_statistics_t rtems_malloc_statistics; > - > void RTEMS_Malloc_Initialize( > const Heap_Area *areas, > size_t area_count, > @@ -59,15 +57,6 @@ void RTEMS_Malloc_Initialize( > ); > } > } > - > - /* > - * If configured, initialize the statistics support > - */ > - if ( rtems_malloc_statistics_helpers != NULL ) { > - (*rtems_malloc_statistics_helpers->initialize)(); > - } > - > - MSBUMP( space_available, _Protected_heap_Get_size( heap ) ); > } > #else > void RTEMS_Malloc_Initialize( > diff --git a/cpukit/libcsupport/src/malloc_p.h > b/cpukit/libcsupport/src/malloc_p.h > index 4295aeb..89adc5f 100644 > --- a/cpukit/libcsupport/src/malloc_p.h > +++ b/cpukit/libcsupport/src/malloc_p.h > @@ -22,13 +22,6 @@ > #include <rtems/chain.h> > > /* > - * Malloc Statistics Structure > - */ > -extern rtems_malloc_statistics_t rtems_malloc_statistics; > - > -#define MSBUMP(_f,_n) rtems_malloc_statistics._f += (_n) > - > -/* > * Process deferred free operations > */ > bool malloc_is_system_state_OK(void); > diff --git a/cpukit/libcsupport/src/malloc_report_statistics.c > b/cpukit/libcsupport/src/malloc_report_statistics.c > deleted file mode 100644 > index d726b72..0000000 > --- a/cpukit/libcsupport/src/malloc_report_statistics.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/** > - * @file > - * > - * @brief Print Malloc Statistic Usage Report > - * @ingroup MallocSupport > - */ > - > -/* > - * COPYRIGHT (c) 1989-2007. > - * On-Line Applications Research Corporation (OAR). > - * > - * 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. > - */ > - > -#if HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#ifdef RTEMS_NEWLIB > -#include "malloc_p.h" > - > -void malloc_report_statistics(void) > -{ > - malloc_report_statistics_with_plugin( NULL, printk_plugin ); > -} > - > -#endif > diff --git a/cpukit/libcsupport/src/malloc_report_statistics_plugin.c > b/cpukit/libcsupport/src/malloc_report_statistics_plugin.c > deleted file mode 100644 > index 1113944..0000000 > --- a/cpukit/libcsupport/src/malloc_report_statistics_plugin.c > +++ /dev/null > @@ -1,59 +0,0 @@ > -/* > - * malloc_report_statistics with plugin Implementation > - * > - * COPYRIGHT (c) 1989-2007. > - * On-Line Applications Research Corporation (OAR). > - * > - * 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. > - */ > - > -#if HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#ifdef RTEMS_NEWLIB > -#include "malloc_p.h" > -#include "inttypes.h" > - > -void malloc_report_statistics_with_plugin( > - void *context, > - rtems_printk_plugin_t print > -) > -{ > - rtems_malloc_statistics_t *s = &rtems_malloc_statistics; > - uint32_t space_available = s->space_available; > - uint32_t allocated = (uint32_t) (s->lifetime_allocated - > s->lifetime_freed); > - uint32_t max_depth = s->max_depth; > - /* avoid float! */ > - uint32_t allocated_per_cent = (allocated * 100) / space_available; > - uint32_t max_depth_per_cent = (max_depth * 100) / space_available; > - > - (*print)( > - context, > - "Malloc statistics\n" > - " avail:%"PRIu32"k allocated:%"PRIu32"k (%"PRIu32"%%) " > - "max:%"PRIu32"k (%"PRIu32"%%)" > - " lifetime:%"PRIuMAX"k freed:%"PRIuMAX"k\n", > - space_available / 1024, > - allocated / 1024, > - allocated_per_cent, > - max_depth / 1024, > - max_depth_per_cent, > - s->lifetime_allocated / 1024, > - s->lifetime_freed / 1024 > - ); > - (*print)( > - context, > - " Call counts: malloc:%"PRIu32" memalign:%"PRIu32" free:%"PRIu32 > - " realloc:%"PRIu32" calloc:%"PRIu32"\n", > - s->malloc_calls, > - s->memalign_calls, > - s->free_calls, > - s->realloc_calls, > - s->calloc_calls > - ); > -} > - > -#endif > diff --git a/cpukit/libcsupport/src/malloc_statistics_helpers.c > b/cpukit/libcsupport/src/malloc_statistics_helpers.c > deleted file mode 100644 > index 1ac128f..0000000 > --- a/cpukit/libcsupport/src/malloc_statistics_helpers.c > +++ /dev/null > @@ -1,77 +0,0 @@ > -/** > - * @file > - * > - * @brief Malloc Statistics Support > - * @ingroup MallocSupport > - */ > - > -/* > - * COPYRIGHT (c) 1989-2007. > - * On-Line Applications Research Corporation (OAR). > - * > - * 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. > - */ > - > -#if HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#ifdef RTEMS_NEWLIB > -#include "malloc_p.h" > - > -#include <sys/reent.h> > -#include <stdlib.h> > -#include <string.h> > - > -static void rtems_malloc_statistics_initialize( void ) > -{ > - /* > - * Zero all the statistics > - */ > - (void) memset(&rtems_malloc_statistics, 0, > sizeof(rtems_malloc_statistics)); > -} > - > -static void rtems_malloc_statistics_at_malloc( > - void *pointer > -) > -{ > - uintptr_t actual_size = 0; > - uint32_t current_depth; > - rtems_malloc_statistics_t *s = &rtems_malloc_statistics; > - > - if ( !pointer ) > - return; > - > - _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size); > - > - MSBUMP(lifetime_allocated, actual_size); > - > - current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed); > - if (current_depth > s->max_depth) > - s->max_depth = current_depth; > -} > - > -/** > - * If the pointer is not in the heap, then we won't be able to get its > - * size and thus we skip updating the statistics. > - */ > -static void rtems_malloc_statistics_at_free( > - void *pointer > -) > -{ > - uintptr_t size; > - > - if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) { > - MSBUMP(lifetime_freed, size); > - } > -} > - > -rtems_malloc_statistics_functions_t rtems_malloc_statistics_helpers_table = { > - rtems_malloc_statistics_initialize, > - rtems_malloc_statistics_at_malloc, > - rtems_malloc_statistics_at_free, > -}; > - > -#endif > diff --git a/cpukit/libcsupport/src/posix_memalign.c > b/cpukit/libcsupport/src/posix_memalign.c > index 97e3080..80865cd 100644 > --- a/cpukit/libcsupport/src/posix_memalign.c > +++ b/cpukit/libcsupport/src/posix_memalign.c > @@ -1,7 +1,6 @@ > /** > * @file > * > - * @brief Update call statistics > * @ingroup libcsupport > */ > > @@ -30,11 +29,6 @@ int posix_memalign( > size_t size > ) > { > - /* > - * Update call statistics > - */ > - MSBUMP(memalign_calls, 1); > - > if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *))) > return EINVAL; > > diff --git a/cpukit/libcsupport/src/realloc.c > b/cpukit/libcsupport/src/realloc.c > index 2ca239d..6efdfdf 100644 > --- a/cpukit/libcsupport/src/realloc.c > +++ b/cpukit/libcsupport/src/realloc.c > @@ -35,8 +35,6 @@ void *realloc( > uintptr_t old_size; > char *new_area; > > - MSBUMP(realloc_calls, 1); > - > /* > * Do not attempt to allocate memory if in a critical section or ISR. > */ > @@ -77,8 +75,6 @@ void *realloc( > > new_area = malloc( size ); > > - MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */ > - > if ( !new_area ) { > return (void *) 0; > } > diff --git a/cpukit/libcsupport/src/rtems_heap_extend_via_sbrk.c > b/cpukit/libcsupport/src/rtems_heap_extend_via_sbrk.c > index e895dc5..61bc1cf 100644 > --- a/cpukit/libcsupport/src/rtems_heap_extend_via_sbrk.c > +++ b/cpukit/libcsupport/src/rtems_heap_extend_via_sbrk.c > @@ -52,8 +52,6 @@ void *rtems_heap_extend_via_sbrk( > bool ok = _Protected_heap_Extend( heap, area_begin, sbrk_size ); > > if ( ok ) { > - MSBUMP( space_available, sbrk_size ); > - > return_this = _Protected_heap_Allocate( heap, alloc_size ); > } else { > sbrk( -sbrk_size ); > diff --git a/cpukit/libcsupport/src/rtems_memalign.c > b/cpukit/libcsupport/src/rtems_memalign.c > index 1b9c6bc..5755fa0 100644 > --- a/cpukit/libcsupport/src/rtems_memalign.c > +++ b/cpukit/libcsupport/src/rtems_memalign.c > @@ -62,12 +62,6 @@ int rtems_memalign( > if ( !return_this ) > return ENOMEM; > > - /* > - * If configured, update the more involved statistics > - */ > - if ( rtems_malloc_statistics_helpers ) > - (*rtems_malloc_statistics_helpers->at_malloc)(pointer); > - > *pointer = return_this; > return 0; > } > diff --git a/cpukit/libmisc/shell/main_mallocinfo.c > b/cpukit/libmisc/shell/main_mallocinfo.c > index b708296..54c602a 100644 > --- a/cpukit/libmisc/shell/main_mallocinfo.c > +++ b/cpukit/libmisc/shell/main_mallocinfo.c > @@ -19,7 +19,7 @@ > #include <rtems.h> > #include <rtems/malloc.h> > #include <rtems/libcsupport.h> > -#include <rtems/shell.h> > +#include <rtems/shellconfig.h> > > #include "internal.h" > > @@ -28,31 +28,23 @@ static int rtems_shell_main_malloc_info( > char *argv[] > ) > { > - if ( argc == 2 ) { > - rtems_shell_print_unified_work_area_message(); > + if ( argc == 2 && strcmp( argv[ 1 ], "walk" ) == 0 ) { > + malloc_walk( 0, true ); > + } else { > + region_information_block info; > > - if ( !strcmp( argv[1], "info" ) ) { > - region_information_block info; > - > - malloc_info( &info ); > - rtems_shell_print_heap_info( "free", &info.Free ); > - rtems_shell_print_heap_info( "used", &info.Used ); > - return 0; > - } else if ( !strcmp( argv[1], "stats" ) ) { > - malloc_report_statistics_with_plugin( > - stdout, > - (rtems_printk_plugin_t) fprintf > - ); > - return 0; > - } > + rtems_shell_print_unified_work_area_message(); > + malloc_info( &info ); > + rtems_shell_print_heap_info( "free", &info.Free ); > + rtems_shell_print_heap_info( "used", &info.Used ); > } > - fprintf( stderr, "%s: [info|stats]\n", argv[0] ); > - return -1; > + > + return 0; > } > > rtems_shell_cmd_t rtems_shell_MALLOC_INFO_Command = { > "malloc", /* name */ > - "[info|stats]", /* usage */ > + "malloc [walk]", /* usage */ > "mem", /* topic */ > rtems_shell_main_malloc_info, /* command */ > NULL, /* alias */ > diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h > index a30c008..76cba05 100644 > --- a/cpukit/sapi/include/confdefs.h > +++ b/cpukit/sapi/include/confdefs.h > @@ -1115,19 +1115,6 @@ const rtems_libio_helper rtems_fs_init_helper = > > #ifdef CONFIGURE_INIT > /** > - * This configures the malloc family statistics to be available. > - * By default only function call counts are kept. > - */ > - rtems_malloc_statistics_functions_t *rtems_malloc_statistics_helpers = > - #ifndef CONFIGURE_MALLOC_STATISTICS > - NULL; > - #else > - &rtems_malloc_statistics_helpers_table; > - #endif > -#endif > - > -#ifdef CONFIGURE_INIT > - /** > * This configures the sbrk() support for the malloc family. > * By default it is assumed that the BSP provides all available > * RAM to the malloc family implementation so sbrk()'ing to get > diff --git a/doc/shell/memory.t b/doc/shell/memory.t > index 3227e73..0fdf1f8 100644 > --- a/doc/shell/memory.t > +++ b/doc/shell/memory.t > @@ -530,18 +530,14 @@ extern rtems_shell_cmd_t rtems_shell_MMOVE_Command; > @subheading SYNOPSYS: > > @example > -malloc [info|stats] > +malloc [walk] > @end example > > @subheading DESCRIPTION: > > -This command prints either information or statistics about the > -C Program Heap used by the @code{malloc} family of calls based upon > -the value of the first argument passed to the command. > - > -When the subcommand @code{info} is specified, information on the > -current state of the C Program Heap is reported. This includes the following > -information: > +This command prints information about the current state of the C Program Heap > +used by the @code{malloc()} family of calls if no or invalid options are > passed > +to the command. This includes the following information: > > @itemize @bullet > @item Number of free blocks > @@ -552,23 +548,8 @@ information: > @item Total bytes used > @end itemize > > -When the subcommand @code{stats} is specified, statistics on the > -the C Program Heap are reported. Malloc Family Statistics must > -be enabled for all of the values to be updated. The statistics > -available includes the following information: > - > -@itemize @bullet > -@item > -@item Currently available memory (in kilobytes) > -@item Currently allocated memory (in kilobytes) > -@item Maximum amount of memory ever allocated (in kilobytes) > -@item Lifetime tally of allocated memory (in kilobytes) > -@item Lifetime tally of freed memory (in kilobytes) > -@item Number of calls to @code{malloc} > -@item Number of calls to @code{free} > -@item Number of calls to @code{realloc} > -@item Number of calls to @code{calloc} > -@end itemize > +When the subcommand @code{walk} is specified, then a heap walk will be > +performed and information about each block is printed out. > > @subheading EXIT STATUS: > > @@ -576,47 +557,41 @@ This command returns 0 on success and non-zero if an > error is encountered. > > @subheading NOTES: > > -@findex CONFIGURE_MALLOC_STATISTICS > - > -The @code{CONFIGURE_MALLOC_STATISTICS} @code{confdefs.h} constant > -must be defined when the application is configured for the full > -set of statistics information to be available. > +NONE > > @subheading EXAMPLES: > > The following is an example of how to use the @code{malloc} command. > > @example > -SHLL [/] $ malloc info > +SHLL [/] $ malloc > Number of free blocks: 3 > Largest free block: 3626672 > Total bytes free: 3627768 > Number of used blocks: 130 > Largest used block: 1048 > Total bytes used: 10136 > -SHLL [/] $ malloc stats > -Malloc statistics > - avail:3552k allocated:9k (0%) max:10k (0%) lifetime:21k freed:12k > - Call counts: malloc:203 free:93 realloc:0 calloc:20 > -SHLL [/] $ malloc info > -Number of free blocks: 3 > -Largest free block: 3626672 > -Total bytes free: 3627768 > -Number of used blocks: 130 > -Largest used block: 1048 > -Total bytes used: 10136 > -SHLL [/] $ malloc stats > -Malloc statistics > - avail:3552k allocated:9k (0%) max:10k (0%) lifetime:23k freed:14k > - Call counts: malloc:205 free:95 realloc:0 calloc:20 > +SHLL [/] $ malloc walk > +malloc walk > +PASS[0]: page size 8, min block size 48 > + area begin 0x00210210, area end 0x0FFFC000 > + first block 0x00210214, last block 0x0FFFBFDC > + first free 0x00228084, last free 0x00228354 > +PASS[0]: block 0x00210214: size 88 > +... > +PASS[0]: block 0x00220154: size 144 > +PASS[0]: block 0x002201E4: size 168, prev 0x002205BC, next 0x00228354 (= > last free) > +PASS[0]: block 0x0022028C: size 168, prev_size 168 > +... > +PASS[0]: block 0x00226E7C: size 4136 > +PASS[0]: block 0x00227EA4: size 408, prev 0x00228084 (= first free), next > 0x00226CE4 > +PASS[0]: block 0x0022803C: size 72, prev_size 408 > +PASS[0]: block 0x00228084: size 648, prev 0x0020F75C (= head), next > 0x00227EA4 > +PASS[0]: block 0x0022830C: size 72, prev_size 648 > +PASS[0]: block 0x00228354: size 266157192, prev 0x002201E4, next 0x0020F75C > (= tail) > +PASS[0]: block 0x0FFFBFDC: size 4028711480, prev_size 266157192 > @end example > > -Note that in the above example, the lifetime allocated and free > -values have increased between the two calls to @code{malloc stats} > -even though the amount of memory available in the C Program Heap > -is the same in both the @code{malloc info} invocations. This indicates > -that memory was allocated and freed as a side-effect of the commands. > - > @subheading CONFIGURATION: > > @findex CONFIGURE_SHELL_NO_COMMAND_MALLOC > diff --git a/doc/user/conf.t b/doc/user/conf.t > index d72ff06..68b5ede 100644 > --- a/doc/user/conf.t > +++ b/doc/user/conf.t > @@ -2434,37 +2434,6 @@ related configuration parameters supported by > @code{<rtems/confdefs.h>}. > > @c > -@c === CONFIGURE_MALLOC_STATISTICS === > -@c > -@subsection Enable Malloc Family Statistics > - > -@findex CONFIGURE_MALLOC_STATISTICS > - > - > -@table @b > -@item CONSTANT: > -@code{CONFIGURE_MALLOC_STATISTICS} > - > -@item DATA TYPE: > -Boolean feature macro. > - > -@item RANGE: > -Defined or undefined. > - > -@item DEFAULT VALUE: > -This is not defined by default, and Malloc Statistics are disabled. > - > -@end table > - > -@subheading DESCRIPTION: > -This configuration parameter is defined when the application wishes to > -enable the gathering of more detailed statistics on the C Malloc Family > -of routines. > - > -@subheading NOTES: > -None. > - > -@c > @c === CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS === > @c > @subsection Specify Maximum Number of File Descriptors > diff --git a/testsuites/libtests/Makefile.am b/testsuites/libtests/Makefile.am > index a5f39d8..4f22ac8 100644 > --- a/testsuites/libtests/Makefile.am > +++ b/testsuites/libtests/Makefile.am > @@ -24,7 +24,7 @@ _SUBDIRS += capture01 > > _SUBDIRS += bspcmdline01 cpuuse devfs01 devfs02 devfs03 devfs04 \ > deviceio01 devnullfatal01 dumpbuf01 gxx01 top\ > - malloctest malloc02 malloc03 malloc04 malloc05 heapwalk \ > + malloctest malloc02 malloc03 malloc04 heapwalk \ > putenvtest monitor monitor02 rtmonuse stackchk stackchk01 \ > termios termios01 termios02 termios03 termios04 termios05 \ > termios06 termios07 termios08 \ > diff --git a/testsuites/libtests/configure.ac > b/testsuites/libtests/configure.ac > index 8efedb2..f8eb272 100644 > --- a/testsuites/libtests/configure.ac > +++ b/testsuites/libtests/configure.ac > @@ -117,7 +117,6 @@ malloctest/Makefile > malloc02/Makefile > malloc03/Makefile > malloc04/Makefile > -malloc05/Makefile > monitor/Makefile > monitor02/Makefile > mouse01/Makefile > diff --git a/testsuites/libtests/malloc05/Makefile.am > b/testsuites/libtests/malloc05/Makefile.am > deleted file mode 100644 > index 816b169..0000000 > --- a/testsuites/libtests/malloc05/Makefile.am > +++ /dev/null > @@ -1,21 +0,0 @@ > - > -rtems_tests_PROGRAMS = malloc05 > -malloc05_SOURCES = init.c > - > -dist_rtems_tests_DATA = malloc05.scn > -dist_rtems_tests_DATA += malloc05.doc > - > -include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg > -include $(top_srcdir)/../automake/compile.am > -include $(top_srcdir)/../automake/leaf.am > - > -AM_CPPFLAGS += -I$(top_srcdir)/../support/include > - > -LINK_OBJS = $(malloc05_OBJECTS) > -LINK_LIBS = $(malloc05_LDLIBS) > - > -malloc05$(EXEEXT): $(malloc05_OBJECTS) $(malloc05_DEPENDENCIES) > - @rm -f malloc05$(EXEEXT) > - $(make-exe) > - > -include $(top_srcdir)/../automake/local.am > diff --git a/testsuites/libtests/malloc05/init.c > b/testsuites/libtests/malloc05/init.c > deleted file mode 100644 > index d832573..0000000 > --- a/testsuites/libtests/malloc05/init.c > +++ /dev/null > @@ -1,58 +0,0 @@ > -/* > - * COPYRIGHT (c) 1989-2012. > - * On-Line Applications Research Corporation (OAR). > - * > - * 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. > - */ > - > -#ifdef HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#include <tmacros.h> > -#include "test_support.h" > -#include <rtems/malloc.h> > - > -const char rtems_test_name[] = "MALLOC 5"; > - > -/* forward declarations to avoid warnings */ > -rtems_task Init(rtems_task_argument argument); > - > -rtems_task Init( > - rtems_task_argument argument > -) > -{ > - int sc; > - rtems_malloc_statistics_t stats; > - > - TEST_BEGIN(); > - > - puts( "malloc_get_statistics( NULL ) - returns -1" ); > - sc = malloc_get_statistics( NULL ); > - rtems_test_assert( sc == -1 ); > - > - puts( "malloc_get_statistics( &stats ) - returns -0" ); > - sc = malloc_get_statistics( &stats ); > - rtems_test_assert( sc == 0 ); > - > - TEST_END(); > - > - rtems_test_exit(0); > -} > - > -/* configuration information */ > - > -#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER > -#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > - > -#define CONFIGURE_MAXIMUM_TASKS 1 > -#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > - > -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE > - > -#define CONFIGURE_INIT > - > -#include <rtems/confdefs.h> > -/* end of file */ > diff --git a/testsuites/libtests/malloc05/malloc05.doc > b/testsuites/libtests/malloc05/malloc05.doc > deleted file mode 100644 > index 7cc3e3c..0000000 > --- a/testsuites/libtests/malloc05/malloc05.doc > +++ /dev/null > @@ -1,19 +0,0 @@ > -# COPYRIGHT (c) 1989-2010. > -# On-Line Applications Research Corporation (OAR). > -# > -# 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. > -# > - > -This file describes the directives and concepts tested by this test set. > - > -test set name: malloc05 > - > -directives: > - > - malloc_get_statistics > - > -concepts: > - > -+ Fully exercise malloc_get_statistics. > diff --git a/testsuites/libtests/malloc05/malloc05.scn > b/testsuites/libtests/malloc05/malloc05.scn > deleted file mode 100644 > index 0331bf6..0000000 > --- a/testsuites/libtests/malloc05/malloc05.scn > +++ /dev/null > @@ -1,4 +0,0 @@ > -*** TEST MALLOC05 *** > -malloc_get_statistics( NULL ) - returns -1 > -malloc_get_statistics( &stats ) - returns -0 > -*** END OF TEST MALLOC05 *** > diff --git a/testsuites/libtests/malloctest/task1.c > b/testsuites/libtests/malloctest/task1.c > index b19c320..753a74e 100644 > --- a/testsuites/libtests/malloctest/task1.c > +++ b/testsuites/libtests/malloctest/task1.c > @@ -59,7 +59,6 @@ rtems_task Task_1_through_5( > } > printf("mallocing %d bytes\n",mem_amt); > memset( mem_ptr, mem_amt, mem_amt ); > - malloc_report_statistics(); > malloc_walk_ok = malloc_walk( 1, false ); > rtems_test_assert( malloc_walk_ok ); > status = rtems_task_wake_after( > -- > 1.8.4.5 > > _______________________________________________ > 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