[PATCH 1/2] libcsupport: Delete malloc statistics
Gedare Bloom
gedare at rtems.org
Thu Nov 27 15:40:50 UTC 2014
Any particular reason for dropping memalign_calls?
Any other stats get dropped?
On Thu, Nov 27, 2014 at 7:26 AM, Sebastian Huber
<sebastian.huber at 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:
> -
> - at itemize @bullet
> - at item
> - at item Currently available memory (in kilobytes)
> - at item Currently allocated memory (in kilobytes)
> - at item Maximum amount of memory ever allocated (in kilobytes)
> - at item Lifetime tally of allocated memory (in kilobytes)
> - at item Lifetime tally of freed memory (in kilobytes)
> - at item Number of calls to @code{malloc}
> - at item Number of calls to @code{free}
> - at item Number of calls to @code{realloc}
> - at item Number of calls to @code{calloc}
> - at 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:
>
> - at 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
> - at c === CONFIGURE_MALLOC_STATISTICS ===
> - at c
> - at subsection Enable Malloc Family Statistics
> -
> - at findex CONFIGURE_MALLOC_STATISTICS
> -
> -
> - at table @b
> - at item CONSTANT:
> - at code{CONFIGURE_MALLOC_STATISTICS}
> -
> - at item DATA TYPE:
> -Boolean feature macro.
> -
> - at item RANGE:
> -Defined or undefined.
> -
> - at item DEFAULT VALUE:
> -This is not defined by default, and Malloc Statistics are disabled.
> -
> - at end table
> -
> - at 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.
> -
> - at subheading NOTES:
> -None.
> -
> - at 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 at .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 at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list