summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-18 20:36:40 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-18 20:36:40 +0000
commit543fe820616f31350366ab61052050303d17dd25 (patch)
treea2e4702be2cd9988ed341586c1c8c976b8ba3bb8 /cpukit/libmisc
parent2007-12-18 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-543fe820616f31350366ab61052050303d17dd25.tar.bz2
2007-12-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* libcsupport/Makefile.am, libcsupport/preinstall.am, libcsupport/src/malloc.c, libcsupport/src/mallocinfo.c, libmisc/Makefile.am, libmisc/shell/main_mallocinfo.c, libmisc/shell/shellconfig.h: Split malloc.c into multiple files with one function per file. Also split out statistics into a separate file which can be plugged in dynamically. Right now, it is always in. I suspect that splitting the file removed more code than leaving statistics in. I tinkered with malloc information command in the shell. I resurrected the malloc arena code as malloc boundary. This code is now compiled all the time even though it does not appear to work. * libcsupport/include/rtems/malloc.h, libcsupport/src/_calloc_r.c, libcsupport/src/_free_r.c, libcsupport/src/_malloc_r.c, libcsupport/src/_realloc_r.c, libcsupport/src/calloc.c, libcsupport/src/free.c, libcsupport/src/malloc_boundary.c, libcsupport/src/malloc_get_statistics.c, libcsupport/src/malloc_initialize.c, libcsupport/src/malloc_p.h, libcsupport/src/malloc_report_statistics.c, libcsupport/src/malloc_report_statistics_plugin.c, libcsupport/src/malloc_statistics_helpers.c, libcsupport/src/malloc_walk.c, libcsupport/src/realloc.c, libmisc/shell/main_perioduse.c: New files.
Diffstat (limited to 'cpukit/libmisc')
-rw-r--r--cpukit/libmisc/Makefile.am12
-rw-r--r--cpukit/libmisc/shell/main_mallocinfo.c17
-rw-r--r--cpukit/libmisc/shell/main_perioduse.c45
-rw-r--r--cpukit/libmisc/shell/shellconfig.h6
4 files changed, 67 insertions, 13 deletions
diff --git a/cpukit/libmisc/Makefile.am b/cpukit/libmisc/Makefile.am
index 984bcaf8c9..19679c53d4 100644
--- a/cpukit/libmisc/Makefile.am
+++ b/cpukit/libmisc/Makefile.am
@@ -77,12 +77,12 @@ libshell_a_SOURCES = shell/cat_file.c shell/cmds.c shell/internal.h \
shell/main_mdump.c shell/main_medit.c shell/main_mfill.c \
shell/main_mkdir.c shell/main_mount.c $(shell_mount_fs) \
shell/main_mount_msdos.c shell/main_mmove.c shell/main_msdosfmt.c \
- shell/main_mwdump.c shell/main_pwd.c shell/main_rm.c shell/main_rmdir.c \
- shell/main_stackuse.c shell/main_tty.c shell/main_umask.c \
- shell/main_unmount.c shell/main_blksync.c shell/main_whoami.c \
- shell/shell.c shell/shell_cmdset.c shell/shellconfig.c \
- shell/shellconfig.h shell/shell.h shell/shell_makeargs.c \
- shell/str2int.c shell/write_file.c
+ shell/main_mwdump.c shell/main_perioduse.c shell/main_pwd.c \
+ shell/main_rm.c shell/main_rmdir.c shell/main_stackuse.c \
+ shell/main_tty.c shell/main_umask.c shell/main_unmount.c \
+ shell/main_blksync.c shell/main_whoami.c shell/shell.c \
+ shell/shell_cmdset.c shell/shellconfig.c shell/shellconfig.h \
+ shell/shell.h shell/shell_makeargs.c shell/str2int.c shell/write_file.c
endif
EXTRA_DIST += shell/README
diff --git a/cpukit/libmisc/shell/main_mallocinfo.c b/cpukit/libmisc/shell/main_mallocinfo.c
index 689a022073..fa3c239ba4 100644
--- a/cpukit/libmisc/shell/main_mallocinfo.c
+++ b/cpukit/libmisc/shell/main_mallocinfo.c
@@ -18,6 +18,7 @@
#include <inttypes.h>
#include <rtems.h>
+#include <rtems/malloc.h>
#include <rtems/shell.h>
#include "internal.h"
@@ -39,8 +40,8 @@ static void printit(
}
int rtems_shell_main_malloc_info(
- int argc,
- char * argv[]
+ int argc,
+ char *argv[]
)
{
if ( argc == 2 ) {
@@ -51,19 +52,21 @@ int rtems_shell_main_malloc_info(
printit( "free", &info.Free );
printit( "used", &info.Used );
return 0;
- } else if ( !strcmp( argv[1], "dump" ) ) {
- extern void malloc_dump();
- malloc_dump();
+ } else if ( !strcmp( argv[1], "stats" ) ) {
+ malloc_report_statistics_with_plugin(
+ stdout,
+ (rtems_printk_plugin_t) fprintf
+ );
return 0;
}
}
- fprintf( stderr, "subcommands info or dump\n" );
+ fprintf( stderr, "subcommands info or stats\n" );
return -1;
}
rtems_shell_cmd_t rtems_shell_MALLOC_INFO_Command = {
"malloc", /* name */
- "[info|dump]", /* usage */
+ "[info|stats]", /* usage */
"mem", /* topic */
rtems_shell_main_malloc_info, /* command */
NULL, /* alias */
diff --git a/cpukit/libmisc/shell/main_perioduse.c b/cpukit/libmisc/shell/main_perioduse.c
new file mode 100644
index 0000000000..349e168cd4
--- /dev/null
+++ b/cpukit/libmisc/shell/main_perioduse.c
@@ -0,0 +1,45 @@
+/*
+ * perioduse Command 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.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include <rtems.h>
+#include <rtems/shell.h>
+#include "internal.h"
+
+int rtems_shell_main_perioduse(int argc,char *argv[])
+{
+ if ( argc >= 1 && !strcmp( argv[1], "-r" ) ) {
+ printf( "Resetting Period Usage information\n" );
+ rtems_rate_monotonic_reset_all_statistics();
+ } else {
+ rtems_rate_monotonic_report_statistics_with_plugin(
+ stdout,
+ (rtems_printk_plugin_t)fprintf
+ );
+ }
+ return 0;
+}
+
+rtems_shell_cmd_t rtems_shell_PERIODUSE_Command = {
+ "perioduse", /* name */
+ "[-r] print or reset per period usage", /* usage */
+ "rtems", /* topic */
+ rtems_shell_main_perioduse, /* command */
+ NULL, /* alias */
+ NULL /* next */
+};
diff --git a/cpukit/libmisc/shell/shellconfig.h b/cpukit/libmisc/shell/shellconfig.h
index 0309b1d573..1596c10ca9 100644
--- a/cpukit/libmisc/shell/shellconfig.h
+++ b/cpukit/libmisc/shell/shellconfig.h
@@ -51,6 +51,7 @@ extern rtems_shell_cmd_t rtems_shell_BLKSYNC_Command;
extern rtems_shell_cmd_t rtems_shell_CPUUSE_Command;
extern rtems_shell_cmd_t rtems_shell_STACKUSE_Command;
+extern rtems_shell_cmd_t rtems_shell_PERIODUSE_Command;
extern rtems_shell_cmd_t rtems_shell_MALLOC_INFO_Command;
extern rtems_shell_cmd_t *rtems_shell_Initial_commands[];
@@ -275,6 +276,11 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[];
defined(CONFIGURE_SHELL_COMMAND_STACKUSE)
&rtems_shell_STACKUSE_Command,
#endif
+ #if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \
+ !defined(CONFIGURE_SHELL_NO_COMMAND_PERIODUSE)) || \
+ defined(CONFIGURE_SHELL_COMMAND_PERIODUSE)
+ &rtems_shell_PERIODUSE_Command,
+ #endif
/*
* Malloc family commands