diff --git a/cpukit/libmisc/Makefile.am b/cpukit/libmisc/Makefile.am index 5f6104276e..f09b69d311 100644 --- a/cpukit/libmisc/Makefile.am +++ b/cpukit/libmisc/Makefile.am @@ -113,6 +113,7 @@ libshell_a_SOURCES = shell/cat_file.c shell/cmds.c shell/internal.h \ libshell_a_SOURCES += shell/main_cmdls.c libshell_a_SOURCES += shell/main_cmdchown.c libshell_a_SOURCES += shell/main_cmdchmod.c +libshell_a_SOURCES += shell/main_profreport.c if LIBNETWORKING libshell_a_SOURCES += \ diff --git a/cpukit/libmisc/shell/main_profreport.c b/cpukit/libmisc/shell/main_profreport.c new file mode 100644 index 0000000000..d6e4c5a843 --- /dev/null +++ b/cpukit/libmisc/shell/main_profreport.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2015 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * 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 + +#include + +#include +#include +#include + +static int rtems_shell_main_profreport(int argc, char **argv) +{ + rtems_profiling_report_xml( + "Shell", + (rtems_profiling_printf) fprintf, + stdout, + 0, + " " + ); + + return 0; +} + +rtems_shell_cmd_t rtems_shell_PROFREPORT_Command = { + .name = "profreport", + .usage = "profreport", + .topic = "rtems", + .command = rtems_shell_main_profreport +}; diff --git a/cpukit/libmisc/shell/shellconfig.h b/cpukit/libmisc/shell/shellconfig.h index cc2165b419..2e52a92c2e 100644 --- a/cpukit/libmisc/shell/shellconfig.h +++ b/cpukit/libmisc/shell/shellconfig.h @@ -84,6 +84,7 @@ extern rtems_shell_cmd_t rtems_shell_CPUUSE_Command; extern rtems_shell_cmd_t rtems_shell_TOP_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_PROFREPORT_Command; extern rtems_shell_cmd_t rtems_shell_WKSPACE_INFO_Command; extern rtems_shell_cmd_t rtems_shell_MALLOC_INFO_Command; #if RTEMS_NETWORKING @@ -442,6 +443,11 @@ extern rtems_shell_alias_t * const rtems_shell_Initial_aliases[]; defined(CONFIGURE_SHELL_COMMAND_PERIODUSE) &rtems_shell_PERIODUSE_Command, #endif + #if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \ + !defined(CONFIGURE_SHELL_NO_COMMAND_PROFREPORT)) || \ + defined(CONFIGURE_SHELL_COMMAND_PROFREPORT) + &rtems_shell_PROFREPORT_Command, + #endif #if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \ !defined(CONFIGURE_SHELL_NO_COMMAND_WKSPACE_INFO)) || \ defined(CONFIGURE_SHELL_COMMAND_WKSPACE_INFO) diff --git a/doc/shell/rtems.t b/doc/shell/rtems.t index 5ebead3e4e..b31696e3af 100644 --- a/doc/shell/rtems.t +++ b/doc/shell/rtems.t @@ -15,6 +15,7 @@ The RTEMS shell has the following rtems commands: @item @code{cpuuse} - print or reset per thread cpu usage @item @code{stackuse} - print per thread stack usage @item @code{perioduse} - print or reset per period usage +@item @code{profreport} - print a profiling report @item @code{wkspace} - Display information on Executive Workspace @item @code{config} - Show the system configuration. @item @code{itask} - List init tasks for the system @@ -379,6 +380,113 @@ following prototype: extern rtems_shell_cmd_t rtems_shell_PERIODUSE_Command; @end example +@c +@c +@c +@page +@subsection profreport - print a profiling report + +@pgindex profreport + +@subheading SYNOPSYS: + +@example +profreport +@end example + +@subheading DESCRIPTION: + +This command may be used to print a profiling report. + +@subheading EXIT STATUS: + +This command returns 0. + +@subheading NOTES: + +Profiling must be enabled at build configuration time to get profiling +information. + +@subheading EXAMPLES: + +The following is an example of how to use @code{profreport}: + +@smallexample +SHLL [/] $ profreport + + + 10447 + 2 + 195926627 + 77908688 + 0 + 688 + 127 + 282651157 + 2215855 + + + 9053 + 41 + 3053830335 + 73334202 + 0 + 57 + 35 + 76980203 + 2141179 + + + 608 + 1387 + 112 + 338 + 119031 + 357222 + 1055 + 1055 + 0 + 0 + 0 + + + 4186 + 7575 + 160 + 183 + 1772793111 + 2029733879 + 11039140 + 11037655 + 1485 + 0 + 0 + + +@end smallexample + +@subheading CONFIGURATION: + +@findex CONFIGURE_SHELL_NO_COMMAND_PROFREPORT +@findex CONFIGURE_SHELL_COMMAND_PROFREPORT + +When building a custom command set, define +@code{CONFIGURE_SHELL_COMMAND_PROFREPORT} to have this +command included. + +This command can be excluded from the shell command set by +defining @code{CONFIGURE_SHELL_NO_COMMAND_PROFREPORT} when all +shell commands have been configured. + +@subheading PROGRAMMING INFORMATION: + +The configuration structure for the @code{profreport} has the +following prototype: + +@example +extern rtems_shell_cmd_t rtems_shell_PROFREPORT_Command; +@end example + @c @c @c