summaryrefslogtreecommitdiffstats
path: root/doc/shell/memory.t
diff options
context:
space:
mode:
Diffstat (limited to 'doc/shell/memory.t')
-rw-r--r--doc/shell/memory.t202
1 files changed, 165 insertions, 37 deletions
diff --git a/doc/shell/memory.t b/doc/shell/memory.t
index 05e630de0a..c18e462c72 100644
--- a/doc/shell/memory.t
+++ b/doc/shell/memory.t
@@ -25,6 +25,11 @@ The RTEMS shell has the following memory commands:
@section Commands
+This section details the Memory Commands available. A
+subsection is dedicated to each of the commands and
+describes the behavior and configuration of that
+command as well as providing an example usage.
+
@c
@c
@c
@@ -36,28 +41,43 @@ The RTEMS shell has the following memory commands:
@subheading SYNOPSYS:
@example
-mdump [addr [size]]
+mdump [address [length]]
@end example
@subheading DESCRIPTION:
-This command XXX
+This command displays the contents of memory at the @code{address}
+and @code{length} in bytes specified on the command line.
+
+When @code{length} is not provided, it defaults to @code{320} which
+is twenty lines of output with sixteen bytes of output per line.
+
+When @code{address} is not provided, it defaults to @code{0x00000000}.
@subheading EXIT STATUS:
-This command returns 0 on success and non-zero if an error is encountered.
+This command always returns 0 to indicate success.
@subheading NOTES:
-NONE
+Dumping memory from a non-existent address may result in an unrecoverable
+program fault.
@subheading EXAMPLES:
The following is an example of how to use @code{mdump}:
-@example
-EXAMPLE_TBD
-@end example
+@smallexample
+SHLL [/] $ mdump 0x10000 32
+0x0001000000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
+0x0001001000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
+SHLL [/] $ mdump 0x02000000 32
+0x02000000A1 48 00 00 29 00 80 33-81 C5 22 BC A6 10 21 00 .H..)..3.."...!.
+0x02000010A1 48 00 00 29 00 80 33-81 C5 22 BC A6 10 21 01 .H..)..3.."...!.
+SHLL [/] $ mdump 0x02001000 32
+0x0200100003 00 80 00 82 10 60 00-81 98 40 00 83 48 00 00 ......`...@..H..
+0x0200101084 00 60 01 84 08 A0 07-86 10 20 01 87 28 C0 02 ..`....... ..(..
+@end smallexample
@subheading CONFIGURATION:
@@ -105,28 +125,37 @@ extern rtems_shell_cmd_t rtems_shell_MDUMP_Command;
@subheading SYNOPSYS:
@example
-wdump [addr [size]]
+wdump [address [length]]
@end example
@subheading DESCRIPTION:
-This command XXX
+This command displays the contents of memory at the @code{address}
+and @code{length} in bytes specified on the command line.
+
+When @code{length} is not provided, it defaults to @code{320} which
+is twenty lines of output with sixteen bytes of output per line.
+
+When @code{address} is not provided, it defaults to @code{0x00000000}.
@subheading EXIT STATUS:
-This command returns 0 on success and non-zero if an error is encountered.
+This command always returns 0 to indicate success.
@subheading NOTES:
-NONE
+Dumping memory from a non-existent address may result in an unrecoverable
+program fault.
@subheading EXAMPLES:
The following is an example of how to use @code{wdump}:
-@example
-EXAMPLE_TBD
-@end example
+@smallexample
+SHLL [/] $ wdump 0x02010000 32
+0x02010000 0201 08D8 0201 08C0-0201 08AC 0201 0874 ...............t
+0x02010010 0201 0894 0201 0718-0201 0640 0201 0798 ...........@....
+@end smallexample
@subheading CONFIGURATION:
@@ -174,12 +203,14 @@ extern rtems_shell_cmd_t rtems_shell_WDUMP_Command;
@subheading SYNOPSYS:
@example
-medit addr value [value ...]
+medit address value1 [value2 ... valueN]
@end example
@subheading DESCRIPTION:
-This command XXX
+This command is used to modify the contents of the memory starting
+at @code{address} using the octets specified by the parameters
+@code{value1} through @code{valueN}.
@subheading EXIT STATUS:
@@ -187,15 +218,22 @@ This command returns 0 on success and non-zero if an error is encountered.
@subheading NOTES:
-NONE
+Dumping memory from a non-existent address may result in an unrecoverable
+program fault.
@subheading EXAMPLES:
The following is an example of how to use @code{medit}:
-@example
-EXAMPLE_TBD
-@end example
+@smallexample
+SHLL [/] $ mdump 0x02000000 32
+0x02000000 A1 48 00 00 29 00 80 33-81 C5 22 BC A6 10 21 00 .H..)..3.."...!.
+0x02000010 A1 48 00 00 29 00 80 33-81 C5 22 BC A6 10 21 01 .H..)..3.."...!.
+SHLL [/] $ medit 0x02000000 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09
+SHLL [/] $ mdump 0x02000000 32
+0x02000000 01 02 03 04 05 06 07 08-09 00 22 BC A6 10 21 00 .........."...!.
+0x02000010 A1 48 00 00 29 00 80 33-81 C5 22 BC A6 10 21 01 .H..)..3.."...!.
+@end smallexample
@subheading CONFIGURATION:
@@ -243,12 +281,14 @@ extern rtems_shell_cmd_t rtems_shell_MEDIT_Command;
@subheading SYNOPSYS:
@example
-mfill addr size value
+mfill address length value
@end example
@subheading DESCRIPTION:
-This command XXX
+This command is used to fill the memory starting at @code{address}
+for the specified @code{length} in octets when the specified at
+@code{value}.
@subheading EXIT STATUS:
@@ -256,15 +296,31 @@ This command returns 0 on success and non-zero if an error is encountered.
@subheading NOTES:
-NONE
+Filling a non-existent address range may result in an unrecoverable
+program fault. Similarly overwriting interrupt vector tables, code
+space or critical data areas can be fatal as shown in the example.
@subheading EXAMPLES:
-The following is an example of how to use @code{mfill}:
-
-@example
-EXAMPLE_TBD
-@end example
+In this example, the address used (@code{0x23d89a0}) as the base
+address of the filled area is the end of the stack for the
+Idle thread. This address was determined manually using gdb and
+is very specific to this application and BSP. The first command
+in this example is an @code{mdump} to display the initial contents
+of this memory. We see that the first 8 bytes are 0xA5 which is
+the pattern used as a guard by the Stack Checker. On
+the first context switch after the pattern is overwritten
+by the @code{mfill} command, the Stack Checker detect the pattern
+has been corrupted and generates a fatal error.
+
+@smallexample
+SHLL [/] $ mdump 0x23d89a0 16
+0x023D89A0 A5 A5 A5 A5 A5 A5 A5 A5-FE ED F0 0D 0B AD 0D 06 ................
+SHLL [/] $ mfill 0x23d89a0 13 0x5a
+SHLL [/] $ BLOWN STACK!!! Offending task(0x23D4418): id=0x09010001; name=0x0203D908
+ stack covers range 0x23D89A0 - 0x23D99AF (4112 bytes)
+ Damaged pattern begins at 0x023D89A8 and is 16 bytes long
+@end smallexample
@subheading CONFIGURATION:
@@ -312,12 +368,14 @@ extern rtems_shell_cmd_t rtems_shell_MFILL_Command;
@subheading SYNOPSYS:
@example
-mmove dst src size
+mmove dst src length
@end example
@subheading DESCRIPTION:
-This command XXX
+This command is used to copy the contents of the memory
+starting at @code{src} to the memory located at @code{dst}
+for the specified @code{length} in octets.
@subheading EXIT STATUS:
@@ -331,9 +389,15 @@ NONE
The following is an example of how to use @code{mmove}:
-@example
-EXAMPLE_TBD
-@end example
+@smallexample
+SHLL [/] $ mdump 0x023d99a0 16
+0x023D99A0 A5 A5 A5 A5 A5 A5 A5 A5-A5 A5 A5 A5 A5 A5 A5 A5 ................
+SHLL [/] $ mdump 0x02000000 16
+0x02000000 A1 48 00 00 29 00 80 33-81 C5 22 BC A6 10 21 00 .H..)..3.."...!.
+SHLL [/] $ mmove 0x023d99a0 0x02000000 13
+SHLL [/] $ mdump 0x023d99a0 16
+0x023D99A0 A1 48 00 00 29 00 80 33-81 C5 22 BC A6 A5 A5 A5 .H..)..3..".....
+@end smallexample
@subheading CONFIGURATION:
@@ -386,7 +450,40 @@ malloc [info|stats]
@subheading DESCRIPTION:
-This command XXX
+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:
+
+@itemize @bullet
+@item Number of free blocks
+@item Largest free block
+@item Total bytes free
+@item Number of used blocks
+@item Largest used block
+@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
@subheading EXIT STATUS:
@@ -394,16 +491,47 @@ This command returns 0 on success and non-zero if an error is encountered.
@subheading NOTES:
-NONE
+@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.
@subheading EXAMPLES:
-The following is an example of how to use @code{malloc}:
+The following is an example of how to use the @code{malloc} command.
@example
-EXAMPLE_TBD
+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: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
@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