rtems-docs/shell/shell_old_reference_only.rst
2016-10-27 19:19:00 -05:00

6999 lines
190 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. comment SPDX-License-Identifier: CC-BY-SA-4.0
:orphan:
.. COMMENT: COPYRIGHT (c) 1988-2013.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.
.. COMMENT:
.. COMMENT: Master file for the Shell User's Guide
.. COMMENT:
.. COMMENT: COPYRIGHT (c) 1988-2002.
========================
RTEMS Shell Users Guide
========================
COPYRIGHT © 1988 - 2015.
On-Line Applications Research Corporation (OAR).
The authors have used their best efforts in preparing this material. These
efforts include the development, research, and testing of the theories and
programs to determine their effectiveness. No warranty of any kind, expressed
or implied, with regard to the software or the material contained in this
document is provided. No liability arising out of the application or use of
any product described in this document is assumed. The authors reserve the
right to revise this material and to make changes from time to time in the
content hereof without obligation to notify anyone of such revision or changes.
The RTEMS Project is hosted at http://www.rtems.org/. Any inquiries concerning
RTEMS, its related support components, or its documentation should be directed
to the Community Project hosted at http://www.rtems.org/.
RTEMS Shell Users Guide
########################
Preface
#######
Real-time embedded systems vary widely based upon their operational and
maintenance requirements. Some of these systems provide ways for the user or
developer to interact with them. This interaction could be used for
operational, diagnostic, or configuration purposes. The capabilities described
in this manual are those provided with RTEMS to provide a command line
interface for user access. Some of these commands will be familiar as standard
POSIX utilities while others are RTEMS specific or helpful in debugging and
analyzing an embedded system. As a simple example of the powerful and very
familiar capabilities that the RTEMS Shell provides to an application, consider
the following example which hints at some of the capabilities available:
.. code-block:: shell
Welcome to rtems-4.10.99.0(SPARC/w/FPU/sis)
COPYRIGHT (c) 1989-2011.
On-Line Applications Research Corporation (OAR).
Login into RTEMS
login: rtems
Password:
RTEMS SHELL (Ver.1.0-FRC):/dev/console. Feb 28 2008. 'help' to list commands.
SHLL [/] $ cat /etc/passwd
root:*:0:0:root::/:/bin/sh
rtems:*:1:1:RTEMS Application::/:/bin/sh
tty:!:2:2:tty owner::/:/bin/false
SHLL [/] $ ls /dev
-rwxr-xr-x 1 rtems root 0 Jan 01 00:00 console
-rwxr-xr-x 1 root root 0 Jan 01 00:00 console_b
2 files 0 bytes occupied
SHLL [/] $ stackuse
Stack usage by thread
ID NAME LOW HIGH CURRENT AVAILABLE USED
0x09010001 IDLE 0x023d89a0 - 0x023d99af 0x023d9760 4096 608
0x0a010001 UI1 0x023d9f30 - 0x023daf3f 0x023dad18 4096 1804
0x0a010002 SHLL 0x023db4c0 - 0x023df4cf 0x023de9d0 16384 6204
0xffffffff INTR 0x023d2760 - 0x023d375f 0x00000000 4080 316
SHLL [/] $ mount -L
File systems: msdos
SHLL [/] $
In the above example, the user *rtems* logs into a SPARC based RTEMS system.
The first command is ``cat /etc/passwd``. This simple command lets us know
that this application is running the In Memory File System (IMFS) and that the
infrastructure has provided dummy entries for */etc/passwd* and a few other
files. The contents of */etc/passwd* let us know that the user could have
logged in as ``root``. In fact, the ``root`` user has more permissions than
``rtems`` who is not allowed to write into the filesystem.
The second command is ``ls /dev`` which lets us know that RTEMS has POSIX-style
device nodes which can be accesses through standard I/O function calls.
The third command executed is the RTEMS specific ``stackuse`` which gives a
report on the stack usage of each thread in the system. Since stack overflows
are a common error in deeply embedded systems, this is a surprising simple, yet
powerful debugging aid.
Finally, the last command, ``mount -L`` hints that RTEMS supports a variety of
mountable filesystems. With support for MS-DOS FAT on IDE/ATA and Flash devices
as well as network-based filesystens such as NFS and TFTP, the standard free
RTEMS provides a robuse infrastructure for embedded applications.
This manual describes the RTEMS Shell and its command set. In our terminology,
the Shell is just a loop reading user input and turning that input into
commands with argument. The Shell provided with RTEMS is a simple command
reading loop with limited scripting capabilities. It can be connected to via a
standard serial port or connected to the RTEMS ``telnetd`` server for use across
a network.
Each command in the command set is implemented as a single subroutine which has
a *main-style* prototype. The commands interpret their arguments and operate
upon stdin, stdout, and stderr by default. This allows each command to be
invoked independent of the shell.
The described separation of shell from commands from communications mechanism
was an important design goal. At one level, the RTEMS Shell is a complete
shell environment providing access to multiple POSIX compliant filesystems and
TCP/IP stack. The subset of capabilities available is easy to configure and
the standard Shell can be logged into from either a serial port or via telnet.
But at another level, the Shell is a large set of components which can be
integrated into the users developed command interpreter. In either case, it
is trivial to add custom commands to the command set available.
Acknowledgements
================
.. COMMENT: The RTEMS Project has been granted permission from The Open Group
.. COMMENT: IEEE to excerpt and use portions of the POSIX standards documents
.. COMMENT: in the RTEMS POSIX API User's Guide and RTEMS Shell User's Guide.
.. COMMENT: We have to include a specific acknowledgement paragraph in these
.. COMMENT: documents (e.g. preface or copyright page) and another slightly
.. COMMENT: different paragraph for each manual page that excerpts and uses
.. COMMENT: text from the standards.
.. COMMENT: This file should help ensure that the paragraphs are consistent
.. COMMENT: and not duplicated
The Institute of Electrical and Electronics Engineers, Inc and The Open Group,
have given us permission to reprint portions of their documentation.
.. pull-quote::
Portions of this text are reprinted and reproduced in electronic form from
IEEE Std 1003.1, 2004 Edition, Standard for Information Technology â
Operating System Interface (POSIX), The Open Group Base Specifications
Issue 6, Copyright © 2001-2004 by the Institute of Electrical and
Electronics Engineers, Inc and The Open Group. In the event of any
discrepancy between this version and the original IEEE and The Open Group
Standard, the original IEEE and The Open Group Standard is the referee
document. The original Standard can be obtained online at
http://www.opengroup.org/unix/online.html. This notice shall appear on any
product containing this material.
Configuration and Initialization
################################
Introduction
============
This chapter provides information on how the application configures and
initializes the RTEMS shell.
Configuration
=============
The command set available to the application is user configurable. It is
configured using a mechanism similar to the ``confdefs.h`` mechanism used to
specify application configuration.
In the simplest case, if the user wishes to configure a command set with all
commands available that are neither filesystem management (e.g. mounting,
formating, etc.) or network related, then the following is all that is
required:
.. code-block:: c
#define CONFIGURE_SHELL_COMMANDS_INIT
#define CONFIGURE_SHELL_COMMANDS_ALL
#include <rtems/shellconfig.h>
In a slightly more complex example, if the user wishes to include all
networking commands as well as support for mounting MS-DOS and NFS filesystems,
then the following is all that is required:
.. code-block:: c
#define CONFIGURE_SHELL_COMMANDS_INIT
#define CONFIGURE_SHELL_COMMANDS_ALL
#define CONFIGURE_SHELL_MOUNT_MSDOS
#define CONFIGURE_SHELL_MOUNT_NFS
#include <rtems/shellconfig.h>
Customizing the Command Set
---------------------------
The user can configure specific command sets by either building up the set from
individual commands or starting with a complete set and disabling individual
commands. Each command has two configuration macros associated with it.
*CONFIGURE_SHELL_COMMAND_XXX*
Each command has a constant of this form which is defined when
building a command set by individually enabling specific
commands.
*CONFIGURE_SHELL_NO_COMMAND_XXX*
In contrast, each command has a similar command which is
defined when the application is configuring a command set
by disabling specific commands in the set.
Adding Custom Commands
----------------------
One of the design goals of the RTEMS Shell was to make it easy for a user to
add custom commands specific to their application. We believe this design goal
was accomplished. In order to add a custom command, the user is required to do
the following:
- Provide a *main-style* function which implements the command. If that
command function uses a ``getopt`` related function to parse arguments, it
*MUST* use the reentrant form.
- Provide a command definition structure of type ``rtems_shell_cmd_t``.
- Configure that command using the ``CONFIGURE_SHELL_USER_COMMANDS`` macro.
Custom aliases are configured similarly but the user only provides an alias
definition structure of type ``rtems_shell_alias_t`` and configures the alias
via the ``CONFIGURE_SHELL_USER_ALIASES`` macro.
In the following example, we have implemented a custom command named
``usercmd`` which simply prints the arguments it was passed. We have also
provided an alias for ``usercmd`` named ``userecho``.
.. code-block:: c
#include <rtems/shell.h>
int main_usercmd(int argc, char **argv)
{
int i;
printf( "UserCommand: argc=%d\n", argc );
for (i=0 ; i<argc ; i++ )
printf( "argv[%d]= %s\n", i, argv[i] );
return 0;
}
rtems_shell_cmd_t Shell_USERCMD_Command = {
"usercmd", /* name */
"usercmd n1 \[n2 \[n3...]]", /* usage */
"user", /* topic */
main_usercmd, /* command */
NULL, /* alias */
NULL /* next */
};
rtems_shell_alias_t Shell_USERECHO_Alias = {
"usercmd", /* command */
"userecho" /* alias */
};
#define CONFIGURE_SHELL_USER_COMMANDS &Shell_USERCMD_Command
#define CONFIGURE_SHELL_USER_ALIASES &Shell_USERECHO_Alias
#define CONFIGURE_SHELL_COMMANDS_INIT
#define CONFIGURE_SHELL_COMMANDS_ALL
#define CONFIGURE_SHELL_MOUNT_MSDOS
#include <rtems/shellconfig.h>
Notice in the above example, that the user wrote the*main* for their command
(e.g. ``main_usercmd``) which looks much like any other ``main()``. They then
defined a ``rtems_shell_cmd_t`` structure named ``Shell_USERCMD_Command`` which
describes that command. This command definition structure is registered into
the static command set by defining ``CONFIGURE_SHELL_USER_COMMANDS``
to ``&Shell_USERCMD_Command``.
Similarly, to add the ``userecho`` alias, the user provides the alias
definition structure named ``Shell_USERECHO_Alias`` and defines
``CONFIGURE_SHELL_USER_ALIASES`` to configure the alias.
The user can configure any number of commands and aliases in this manner.
Initialization
==============
The shell may be easily attached to a serial port or to the ``telnetd`` server.
This section describes how that is accomplished.
Attached to a Serial Port
-------------------------
Starting the shell attached to the console or a serial port is very simple. The
user invokes ``rtems_shell_init`` with parameters to indicate the
characteristics of the task that will be executing the shell including name,
stack size, and priority. The user also specifies the device that the shell is
to be attached to.
This example is taken from the ``fileio`` sample test. This shell portion of
this test can be run on any target which provides a console with input and
output capabilities. It does not include any commands which cannot be
supported on all BSPs. The source code for this test is in
``testsuites/samples/fileio`` with the shell configuration in the ``init.c``
file.
.. code-block:: c
#include <rtems/shell.h>
void start_shell(void)
{
printf(" =========================\n");
printf(" starting shell\n");
printf(" =========================\n");
rtems_shell_init(
"SHLL", /* task name */
RTEMS_MINIMUM_STACK_SIZE * 4, /* task stack size */
100, /* task priority */
"/dev/console", /* device name */
false, /* run forever */
true, /* wait for shell to terminate */
rtems_shell_login_check /* login check function,
use NULL to disable a login check */
);
}
In the above example, the call to ``rtems_shell_init`` spawns a task to run the
RTEMS Shell attached to ``/dev/console`` and executing at priority 100. The
caller suspends itself and lets the shell take over the console device. When
the shell is exited by the user, then control returns to the caller.
Attached to a Socket
--------------------
TBD
Access Control
==============
Login Checks
------------
Login checks are optional for the RTEMS shell and can be configured via a login
check handler passed to ``rtems_shell_init()``. One login check handler
is ``rtems_shell_login_check()``.
Configuration Files
-------------------
The following files are used by the login check handler
``rtems_shell_login_check()`` to validate a passphrase for a user and to set up
the user environment for the shell command execution.
:file:`/etc/passwd`
The format for each line is
.. code:: c
user_name:password:UID:GID:GECOS:directory:shell
with colon separated fields. For more information refer to the Linux
PASSWD(5) man page. Use a ``password`` of ``*`` to disable the login of the
user. An empty password allows login without a password for this user. In
contrast to standard UNIX systems, this file is only readable and writeable
for the user with an UID of zero by default. The ``directory`` is used to
perform a filesystem change root operation in ``rtems_shell_login_check()``
in contrast to a normal usage as the HOME directory of the user.
The *default* content is:
.. code:: c
root::0:0::::
so there is *no password required* for the ``root`` user.
:file:`/etc/group`
The format for each line is:
.. code:: c
group_name:password:GID:user_list
with colon separated fields. The ``user_list`` is comma separated. For
more information refer to the Linux GROUP(5) man page. In contrast to
standard UNIX systems, this file is only readable and writeable for the
user with an UID of zero by default. The default content is
.. code:: c
root::0:
Command Visibility and Execution Permission
-------------------------------------------
Each command has:
- an owner,
- a group, and
- a read permission flag for the owner, the group and all other users, and
- an execution permission flag for the owner, the group and all other
users.
The read and write permission flags are stored in the command mode. The read
permission flags determine the visibility of the command for the current user.
The execution permission flags determine the ability to execute a command for
the current user. These command properties can be displayed and changed with
the:
- ``cmdls``,
- ``cmdchown``, and
- ``cmdchmod``
commands. The access is determined by the effective UID, the effective GID and
the supplementary group IDs of the current user and follows the standard
filesystem access procedure.
Add CRYPT(3) Formats
--------------------
By default the ``crypt_r()`` function used by ``rtems_shell_login_check()``
supports only plain text passphrases. Use ``crypt_add_format()`` to add more
formats. The following formats are available out of the box:
- ``crypt_md5_format``,
- ``crypt_sha256_format``, and
- ``crypt_sha512_format``.
An example follows:
.. index:: crypt_add_format
.. code:: c
#include <crypt.h>
void add_formats( void )
{
crypt_add_format( &crypt_md5_format );
crypt_add_format( &crypt_sha512_format );
}
Functions
=========
This section describes the Shell related C functions which are publicly
available related to initialization and configuration.
rtems_shell_init - Initialize the shell
---------------------------------------
.. index:: initialization
**CALLING SEQUENCE:**
.. index:: rtems_shell_init
.. code-block:: c
rtems_status_code rtems_shell_init(
const char *task_name,
size_t task_stacksize,
rtems_task_priority task_priority,
const char *devname,
bool forever,
bool wait,
rtems_login_check login_check
);
**DIRECTIVE STATUS CODES:**
``RTEMS_SUCCESSFUL`` - Shell task spawned successfully
others - to indicate a failure condition
**DESCRIPTION:**
This service creates a task with the specified characteristics to run the RTEMS
Shell attached to the specified ``devname``.
.. note::
This method invokes the ``rtems_task_create`` and ``rtems_task_start``
directives and as such may return any status code that those directives may
return.
There is one POSIX key necessary for all shell instances together and one
POSIX key value pair per instance. You should make sure that your RTEMS
configuration accounts for these resources.
rtems_shell_login_check - Default login check handler
-----------------------------------------------------
.. index:: initialization
**CALLING SEQUENCE:**
.. index:: rtems_shell_login_check
.. code:: c
bool rtems_shell_login_check(
const char \*user,
const char \*passphrase
);
**DIRECTIVE STATUS CODES:**
``true`` - login is allowed, and
``false`` - otherwise.
**DESCRIPTION:**
This function checks if the specified passphrase is valid for the specified
user.
.. note::
As a side-effect if the specified passphrase is valid for the specified
user, this function:
- performs a filesystem change root operation to the directory of the
specified user if the directory path is non-empty,
- changes the owner of the current shell device to the UID of the specified
user,
- sets the real and effective UID of the current user environment to the
UID of the specified user,
- sets the real and effective GID of the current user environment to the
GID of the specified user, and
- sets the supplementary group IDs of the current user environment to the
supplementary group IDs of the specified user.
In case the filesystem change root operation fails, then the environment
setup is aborted and ``false`` is returned.
General Commands
################
Introduction
============
The RTEMS shell has the following general commands:
- ``help`` - Print command help
- ``alias`` - Add alias for an existing command
- ``cmdls`` - List commands
- ``cmdchown`` - Change user or owner of commands
- ``cmdchmod`` - Change mode of commands
- ``date`` - Print or set current date and time
- ``echo`` - Produce message in a shell script
- ``sleep`` - Delay for a specified amount of time
- ``id`` - show uid gid euid and egid
- ``tty`` - show ttyname
- ``whoami`` - print effective user id
- ``getenv`` - print environment variable
- ``setenv`` - set environment variable
- ``unsetenv`` - unset environment variable
- ``time`` - time command execution
- ``logoff`` - logoff from the system
- ``rtc`` - RTC driver configuration
- ``exit`` - alias for logoff command
Commands
========
This section details the General 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.
help - Print command help
-------------------------
.. index:: help
**SYNOPSYS:**
.. code:: c
help misc
**DESCRIPTION:**
This command prints the command help. Help without arguments prints a list of
topics and help with a topic prints the help for that topic.
**EXIT STATUS:**
This command returns 0.
**NOTES:**
The help print will break the output up based on the environment variable
SHELL_LINES. If this environment variable is not set the default is 16
lines. If set the number of lines is set to that the value. If the shell lines
is set 0 there will be no break.
**EXAMPLES:**
The following is an example of how to use ``alias``:
.. code-block:: shell
SHLL [/] $ help
help: ('r' repeat last cmd - 'e' edit last cmd)
TOPIC? The topics are
mem, misc, files, help, rtems, network, monitor
SHLL [/] $ help misc
help: list for the topic 'misc'
alias - alias old new
time - time command [arguments...]
joel - joel [args] SCRIPT
date - date [YYYY-MM-DD HH:MM:SS]
echo - echo [args]
sleep - sleep seconds [nanoseconds]
id - show uid, gid, euid, and egid
tty - show ttyname
whoami - show current user
logoff - logoff from the system
setenv - setenv [var] [string]
getenv - getenv [var]
unsetenv - unsetenv [var]
umask - umask [new_umask]
Press any key to continue...
rtc - real time clock read and set
SHLL [/] $ setenv SHELL_ENV 0
SHLL [/] $ help misc
help: list for the topic 'misc'
alias - alias old new
time - time command [arguments...]
joel - joel [args] SCRIPT
date - date [YYYY-MM-DD HH:MM:SS]
echo - echo [args]
sleep - sleep seconds [nanoseconds]
id - show uid, gid, euid, and egid
tty - show ttyname
whoami - show current user
logoff - logoff from the system
setenv - setenv [var] [string]
getenv - getenv [var]
unsetenv - unsetenv [var]
umask - umask [new_umask]
rtc - real time clock read and set
**CONFIGURATION:**
This command has no configuration.
alias - add alias for an existing command
-----------------------------------------
.. index:: alias
**SYNOPSYS:**
.. code:: c
alias oldCommand newCommand
**DESCRIPTION:**
This command adds an alternate name for an existing command to the command set.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``alias``:
.. code:: c
SHLL \[/] $ me
shell:me command not found
SHLL \[/] $ alias whoami me
SHLL \[/] $ me
rtems
SHLL \[/] $ whoami
rtems
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_ALIAS
.. index:: CONFIGURE_SHELL_COMMAND_ALIAS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_ALIAS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_ALIAS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_alias
The ``alias`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_alias(
int argc,
char \**argv
);
The configuration structure for the ``alias`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_ALIAS_Command;
cmdls - List commands
---------------------
.. index:: cmdls
**SYNOPSYS:**
.. code:: c
cmdls COMMAND...
**DESCRIPTION:**
This command lists the visible commands of the command set.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The current user must have read permission to list a command.
**EXAMPLES:**
The following is an example of how to use ``cmdls``:
.. code:: c
SHLL \[/] # cmdls help shutdown
r-xr-xr-x 0 0 help
r-x------ 0 0 shutdown
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CMDLS
.. index:: CONFIGURE_SHELL_COMMAND_CMDLS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CMDLS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CMDLS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
The configuration structure for the ``cmdls`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CMDLS_Command;
cmdchown - Change user or owner of commands
-------------------------------------------
.. index:: cmdchown
**SYNOPSYS:**
.. code:: c
cmdchown \[OWNER][:\[GROUP]] COMMAND...
**DESCRIPTION:**
This command changes the user or owner of a command.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The current user must have an UID of zero or be the command owner to change the
owner or group.
**EXAMPLES:**
The following is an example of how to use ``cmdchown``:
.. code:: c
[/] # cmdls help
r-xr-xr-x 0 0 help
\[/] # cmdchown 1:1 help
\[/] # cmdls help
r--r--r-- 1 1 help
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CMDCHOWN
.. index:: CONFIGURE_SHELL_COMMAND_CMDCHOWN
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CMDCHOWN`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CMDCHOWN`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
The configuration structure for the ``cmdchown`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CMDCHOWN_Command;
cmdchmod - Change mode of commands
----------------------------------
.. index:: cmdchmod
**SYNOPSYS:**
.. code:: c
cmdchmod OCTAL-MODE COMMAND...
**DESCRIPTION:**
This command changes the mode of a command.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The current user must have an UID of zero or be the command owner to change the
mode.
**EXAMPLES:**
The following is an example of how to use ``cmdchmod``:
.. code:: c
[/] # cmdls help
r-xr-xr-x 0 0 help
\[/] # cmdchmod 544 help
\[/] # cmdls help
r-xr--r-- 0 0 help
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CMDCHMOD
.. index:: CONFIGURE_SHELL_COMMAND_CMDCHMOD
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CMDCHMOD`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CMDCHMOD`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
The configuration structure for the ``cmdchmod`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CMDCHMOD_Command;
date - print or set current date and time
-----------------------------------------
.. index:: date
**SYNOPSYS:**
.. code:: c
date
date DATE TIME
**DESCRIPTION:**
This command operates one of two modes. When invoked with no
arguments, it prints the current date and time. When invoked
with both ``date`` and ``time`` arguments, it sets the
current time.
The ``date`` is specified in ``YYYY-MM-DD`` format.
The ``time`` is specified in ``HH:MM:SS`` format.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
This comm
**EXAMPLES:**
The following is an example of how to use ``date``:
.. code:: c
SHLL \[/] $ date
Fri Jan 1 00:00:09 1988
SHLL \[/] $ date 2008-02-29 06:45:32
SHLL \[/] $ date
Fri Feb 29 06:45:35 2008
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DATE
.. index:: CONFIGURE_SHELL_COMMAND_DATE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_DATE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_DATE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_date
The ``date`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_date(
int argc,
char \**argv
);
The configuration structure for the ``date`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DATE_Command;
echo - produce message in a shell script
----------------------------------------
.. index:: echo
**SYNOPSYS:**
.. code:: c
echo \[-n | -e] args ...
**DESCRIPTION:**
echo prints its arguments on the standard output, separated by spaces.
Unless the *-n* option is present, a newline is output following the
arguments. The *-e* option causes echo to treat the escape sequences
specially, as described in the following paragraph. The *-e* option is the
default, and is provided solely for compatibility with other systems.
Only one of the options *-n* and *-e* may be given.
If any of the following sequences of characters is encountered during
output, the sequence is not output. Instead, the specified action is
performed:
*\\b*
A backspace character is output.
*\\c*
Subsequent output is suppressed. This is normally used at the
end of the last argument to suppress the trailing newline that
echo would otherwise output.
*\\f*
Output a form feed.
*\\n*
Output a newline character.
*\\r*
Output a carriage return.
*\\t*
Output a (horizontal) tab character.
*\\v*
Output a vertical tab.
*\\0digits*
Output the character whose value is given by zero to three digits.
If there are zero digits, a nul character is output.
*\\\\*
Output a backslash.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The octal character escape mechanism (\\0digits) differs from the C lan-
guage mechanism.
There is no way to force ``echo`` to treat its arguments literally, rather
than interpreting them as options and escape sequences.
**EXAMPLES:**
The following is an example of how to use ``echo``:
.. code:: c
SHLL \[/] $ echo a b c
a b c
SHLL \[/] $ echo
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_ECHO
.. index:: CONFIGURE_SHELL_COMMAND_ECHO
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_ECHO`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_ECHO`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_echo
The ``echo`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_echo(
int argc,
char \**argv
);
The configuration structure for the ``echo`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_ECHO_Command;
**ORIGIN:**
The implementation and portions of the documentation for this
command are from NetBSD 4.0.
sleep - delay for a specified amount of time
--------------------------------------------
.. index:: sleep
**SYNOPSYS:**
.. code:: c
sleep seconds
sleep seconds nanoseconds
**DESCRIPTION:**
This command causes the task executing the shell to block
for the specified number of ``seconds`` and ``nanoseconds``.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
This command is implemented using the ``nanosleep()`` method.
The command line interface is similar to the ``sleep`` command
found on POSIX systems but the addition of the ``nanoseconds``
parameter allows fine grained delays in shell scripts without
adding another command such as ``usleep``.
**EXAMPLES:**
The following is an example of how to use ``sleep``:
.. code:: c
SHLL \[/] $ sleep 10
SHLL \[/] $ sleep 0 5000000
It is not clear from the above but there is a ten second
pause after executing the first command before the prompt
is printed. The second command completes very quickly
from a human perspective and there is no noticeable
delay in the prompt being printed.
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_SLEEP
.. index:: CONFIGURE_SHELL_COMMAND_SLEEP
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_SLEEP`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_SLEEP`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_sleep
The ``sleep`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_sleep(
int argc,
char \**argv
);
The configuration structure for the ``sleep`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_SLEEP_Command;
id - show uid gid euid and egid
-------------------------------
.. index:: id
**SYNOPSYS:**
.. code:: c
id
**DESCRIPTION:**
This command prints the user identity. This includes the user id
(uid), group id (gid), effective user id (euid), and effective
group id (egid).
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
Remember there is only one POSIX process in a single processor RTEMS
application. Each thread may have its own user identity and that
identity is used by the filesystem to enforce permissions.
**EXAMPLES:**
The first example of the ``id`` command is from a session logged
in as the normal user ``rtems``:
.. code:: c
SHLL \[/] # id
uid=1(rtems),gid=1(rtems),euid=1(rtems),egid=1(rtems)
The second example of the ``id`` command is from a session logged
in as the ``root`` user:
.. code:: c
SHLL \[/] # id
uid=0(root),gid=0(root),euid=0(root),egid=0(root)
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_ID
.. index:: CONFIGURE_SHELL_COMMAND_ID
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_ID`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_ID`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_id
The ``id`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_id(
int argc,
char \**argv
);
The configuration structure for the ``id`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_ID_Command;
tty - show ttyname
------------------
.. index:: tty
**SYNOPSYS:**
.. code:: c
tty
**DESCRIPTION:**
This command prints the file name of the device connected
to standard input.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``tty``:
.. code:: c
SHLL \[/] $ tty
/dev/console
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_TTY
.. index:: CONFIGURE_SHELL_COMMAND_TTY
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_TTY`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_TTY`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_tty
The ``tty`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_tty(
int argc,
char \**argv
);
The configuration structure for the ``tty`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_TTY_Command;
whoami - print effective user id
--------------------------------
.. index:: whoami
**SYNOPSYS:**
.. code:: c
whoami
**DESCRIPTION:**
This command displays the user name associated with the current
effective user id.
**EXIT STATUS:**
This command always succeeds.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``whoami``:
.. code:: c
SHLL \[/] $ whoami
rtems
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_WHOAMI
.. index:: CONFIGURE_SHELL_COMMAND_WHOAMI
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_WHOAMI`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_WHOAMI`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_whoami
The ``whoami`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_whoami(
int argc,
char \**argv
);
The configuration structure for the ``whoami`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_WHOAMI_Command;
getenv - print environment variable
-----------------------------------
.. index:: getenv
**SYNOPSYS:**
.. code:: c
getenv variable
**DESCRIPTION:**
This command is used to display the value of a ``variable`` in the set
of environment variables.
**EXIT STATUS:**
This command will return 1 and print a diagnostic message if
a failure occurs.
**NOTES:**
The entire RTEMS application shares a single set of environment variables.
**EXAMPLES:**
The following is an example of how to use ``getenv``:
.. code:: c
SHLL \[/] $ getenv BASEPATH
/mnt/hda1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_GETENV
.. index:: CONFIGURE_SHELL_COMMAND_GETENV
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_GETENV`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_GETENV`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_getenv
The ``getenv`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_getenv(
int argc,
char \**argv
);
The configuration structure for the ``getenv`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_GETENV_Command;
setenv - set environment variable
---------------------------------
.. index:: setenv
**SYNOPSYS:**
.. code:: c
setenv variable \[value]
**DESCRIPTION:**
This command is used to add a new ``variable`` to the set of environment
variables or to modify the variable of an already existing ``variable``.
If the ``value`` is not provided, the ``variable`` will be set to the
empty string.
**EXIT STATUS:**
This command will return 1 and print a diagnostic message if
a failure occurs.
**NOTES:**
The entire RTEMS application shares a single set of environment variables.
**EXAMPLES:**
The following is an example of how to use ``setenv``:
.. code:: c
SHLL \[/] $ setenv BASEPATH /mnt/hda1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_SETENV
.. index:: CONFIGURE_SHELL_COMMAND_SETENV
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_SETENV`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_SETENV`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_setenv
The ``setenv`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_setenv(
int argc,
char \**argv
);
The configuration structure for the ``setenv`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_SETENV_Command;
unsetenv - unset environment variable
-------------------------------------
.. index:: unsetenv
**SYNOPSYS:**
.. code:: c
unsetenv variable
**DESCRIPTION:**
This command is remove to a ``variable`` from the set of environment
variables.
**EXIT STATUS:**
This command will return 1 and print a diagnostic message if
a failure occurs.
**NOTES:**
The entire RTEMS application shares a single set of environment variables.
**EXAMPLES:**
The following is an example of how to use ``unsetenv``:
.. code:: c
SHLL \[/] $ unsetenv BASEPATH
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_UNSETENV
.. index:: CONFIGURE_SHELL_COMMAND_UNSETENV
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_UNSETENV`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_UNSETENV`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_unsetenv
The ``unsetenv`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_unsetenv(
int argc,
char \**argv
);
The configuration structure for the ``unsetenv`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_UNSETENV_Command;
time - time command execution
-----------------------------
.. index:: time
**SYNOPSYS:**
.. code:: c
time command \[argument ...]
**DESCRIPTION:**
The time command executes and times a command. After the command
finishes, time writes the total time elapsed. Times are reported in
seconds.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
None.
**EXAMPLES:**
The following is an example of how to use ``time``:
.. code:: c
SHLL \[/] $ time cp -r /nfs/directory /c
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_TIME
.. index:: CONFIGURE_SHELL_COMMAND_TIME
This command is included in the default shell command set. When
building a custom command set, define``CONFIGURE_SHELL_COMMAND_TIME`` to have this command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_TIME`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_time
The ``time`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_time(
int argc,
char \**argv
);
The configuration structure for the ``time`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_TIME_Command;
logoff - logoff from the system
-------------------------------
.. index:: logoff
**SYNOPSYS:**
.. code:: c
logoff
**DESCRIPTION:**
This command logs the user out of the shell.
**EXIT STATUS:**
This command does not return.
**NOTES:**
The system behavior when the shell is exited depends upon how the
shell was initiated. The typical behavior is that a login prompt
will be displayed for the next login attempt or that the connection
will be dropped by the RTEMS system.
**EXAMPLES:**
The following is an example of how to use ``logoff``:
.. code:: c
SHLL \[/] $ logoff
logoff from the system...
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_LOGOFF
.. index:: CONFIGURE_SHELL_COMMAND_LOGOFF
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_LOGOFF`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_LOGOFF`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_logoff
The ``logoff`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_logoff(
int argc,
char \**argv
);
The configuration structure for the ``logoff`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_LOGOFF_Command;
rtc - RTC driver configuration
------------------------------
.. index:: rtc
**SYNOPSYS:**
.. code:: c
rtc
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_RTC
.. index:: CONFIGURE_SHELL_COMMAND_RTC
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_RTC`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_RTC`` when all
shell commands have been configured.
exit - exit the shell
---------------------
.. index:: exit
**SYNOPSYS:**
.. code:: c
exit
**DESCRIPTION:**
This command causes the shell interpreter to ``exit``.
**EXIT STATUS:**
This command does not return.
**NOTES:**
In contrast to `logoff - logoff from the system`_,
this command is built into the shell interpreter loop.
**EXAMPLES:**
The following is an example of how to use ``exit``:
.. code:: c
SHLL \[/] $ exit
Shell exiting
**CONFIGURATION:**
This command is always present and cannot be disabled.
**PROGRAMMING INFORMATION:**
The ``exit`` is implemented directly in the shell interpreter.
There is no C routine associated with it.
.. COMMENT: COPYRIGHT (c) 1988-2008.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.
File and Directory Commands
###########################
Introduction
============
The RTEMS shell has the following file and directory commands:
- ``blksync`` - sync the block driver
- ``cat`` - display file contents
- ``cd`` - alias for chdir
- ``chdir`` - change the current directory
- ``chmod`` - change permissions of a file
- ``chroot`` - change the root directory
- ``cp`` - copy files
- ``dd`` - format disks
- ``debugrfs`` - debug RFS file system
- ``df`` - display file system disk space usage
- ``dir`` - alias for ls
- ``fdisk`` - format disks
- ``hexdump`` - format disks
- ``ln`` - make links
- ``ls`` - list files in the directory
- ``md5`` - display file system disk space usage
- ``mkdir`` - create a directory
- ``mkdos`` - DOSFS disk format
- ``mknod`` - make device special file
- ``mkrfs`` - format RFS file system
- ``mount`` - mount disk
- ``mv`` - move files
- ``pwd`` - print work directory
- ``rmdir`` - remove empty directories
- ``rm`` - remove files
- ``umask`` - Set file mode creation mask
- ``unmount`` - unmount disk
Commands
========
This section details the File and Directory 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.
blksync - sync the block driver
-------------------------------
.. index:: blksync
**SYNOPSYS:**
.. code:: c
blksync driver
**DESCRIPTION:**
This command XXX
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``blksync``:
.. code:: c
EXAMPLE_TBD
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_BLKSYNC
.. index:: CONFIGURE_SHELL_COMMAND_BLKSYNC
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_BLKSYNC`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_BLKSYNC`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_blksync
The ``blksync`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_blksync(
int argc,
char \**argv
);
The configuration structure for the ``blksync`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_BLKSYNC_Command;
cat - display file contents
---------------------------
.. index:: cat
**SYNOPSYS:**
.. code:: c
cat file1 \[file2 .. fileN]
**DESCRIPTION:**
This command displays the contents of the specified files.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
It is possible to read the input from a device file using ``cat``.
**EXAMPLES:**
The following is an example of how to use ``cat``:
.. code:: c
SHLL \[/] # cat /etc/passwd
root:\*:0:0:root::/:/bin/sh
rtems:\*:1:1:RTEMS Application::/:/bin/sh
tty:!:2:2:tty owner::/:/bin/false
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CAT
.. index:: CONFIGURE_SHELL_COMMAND_CAT
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CAT`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CAT`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_cat
The ``cat`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_cat(
int argc,
char \**argv
);
The configuration structure for the ``cat`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CAT_Command;
cd - alias for chdir
--------------------
.. index:: cd
**SYNOPSYS:**
.. code:: c
cd directory
**DESCRIPTION:**
This command is an alias or alternate name for the ``chdir``.
See `ls - list files in the directory`_ for more information.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``cd``:
.. code:: c
SHLL \[/] $ cd etc
SHLL \[/etc] $ cd /
SHLL \[/] $ cd /etc
SHLL \[/etc] $ pwd
/etc
SHLL \[/etc] $ cd /
SHLL \[/] $ pwd
/
SHLL \[/] $ cd etc
SHLL \[/etc] $ cd ..
SHLL \[/] $ pwd
/
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CD
.. index:: CONFIGURE_SHELL_COMMAND_CD
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CD`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CD`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_cd
The ``cd`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_cd(
int argc,
char \**argv
);
The configuration structure for the ``cd`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CD_Command;
chdir - change the current directory
------------------------------------
.. index:: chdir
**SYNOPSYS:**
.. code:: c
chdir \[dir]
**DESCRIPTION:**
This command is used to change the current working directory to
the specified directory. If no arguments are given, the current
working directory will be changed to ``/``.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``chdir``:
.. code:: c
SHLL \[/] $ pwd
/
SHLL \[/] $ chdir etc
SHLL \[/etc] $ pwd
/etc
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CHDIR
.. index:: CONFIGURE_SHELL_COMMAND_CHDIR
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CHDIR`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CHDIR`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_chdir
The ``chdir`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_chdir(
int argc,
char \**argv
);
The configuration structure for the ``chdir`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CHDIR_Command;
chmod - change permissions of a file
------------------------------------
.. index:: chmod
**SYNOPSYS:**
.. code:: c
chmod permissions file1 \[file2...]
**DESCRIPTION:**
This command changes the permissions on the files specified to the
indicated ``permissions``. The permission values are POSIX based
with owner, group, and world having individual read, write, and
executive permission bits.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The ``chmod`` command only takes numeric representations of
the permissions.
**EXAMPLES:**
The following is an example of how to use ``chmod``:
.. code:: c
SHLL \[/] # cd etc
SHLL \[/etc] # ls
-rw-r--r-- 1 root root 102 Jan 01 00:00 passwd
-rw-r--r-- 1 root root 42 Jan 01 00:00 group
-rw-r--r-- 1 root root 30 Jan 01 00:00 issue
-rw-r--r-- 1 root root 28 Jan 01 00:00 issue.net
4 files 202 bytes occupied
SHLL \[/etc] # chmod 0777 passwd
SHLL \[/etc] # ls
-rwxrwxrwx 1 root root 102 Jan 01 00:00 passwd
-rw-r--r-- 1 root root 42 Jan 01 00:00 group
-rw-r--r-- 1 root root 30 Jan 01 00:00 issue
-rw-r--r-- 1 root root 28 Jan 01 00:00 issue.net
4 files 202 bytes occupied
SHLL \[/etc] # chmod 0322 passwd
SHLL \[/etc] # ls
--wx-w--w- 1 nouser root 102 Jan 01 00:00 passwd
-rw-r--r-- 1 nouser root 42 Jan 01 00:00 group
-rw-r--r-- 1 nouser root 30 Jan 01 00:00 issue
-rw-r--r-- 1 nouser root 28 Jan 01 00:00 issue.net
4 files 202 bytes occupied
SHLL \[/etc] # chmod 0644 passwd
SHLL \[/etc] # ls
-rw-r--r-- 1 root root 102 Jan 01 00:00 passwd
-rw-r--r-- 1 root root 42 Jan 01 00:00 group
-rw-r--r-- 1 root root 30 Jan 01 00:00 issue
-rw-r--r-- 1 root root 28 Jan 01 00:00 issue.net
4 files 202 bytes occupied
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CHMOD
.. index:: CONFIGURE_SHELL_COMMAND_CHMOD
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CHMOD`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CHMOD`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_chmod
The ``chmod`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_chmod(
int argc,
char \**argv
);
The configuration structure for the ``chmod`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CHMOD_Command;
chroot - change the root directory
----------------------------------
.. index:: chroot
**SYNOPSYS:**
.. code:: c
chroot \[dir]
**DESCRIPTION:**
This command changes the root directory to ``dir`` for subsequent
commands.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
The destination directory ``dir`` must exist.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``chroot``
and the impact it has on the environment for subsequent
command invocations:
.. code:: c
SHLL \[/] $ cat passwd
cat: passwd: No such file or directory
SHLL \[/] $ chroot etc
SHLL \[/] $ cat passwd
root:\*:0:0:root::/:/bin/sh
rtems:\*:1:1:RTEMS Application::/:/bin/sh
tty:!:2:2:tty owner::/:/bin/false
SHLL \[/] $ cat /etc/passwd
cat: /etc/passwd: No such file or directory
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CHROOT
.. index:: CONFIGURE_SHELL_COMMAND_CHROOT
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CHROOT`` to have this
command included. Additional to that you have to add one
POSIX key value pair for each thread where you want to use
the command.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CHROOT`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_chroot
The ``chroot`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_chroot(
int argc,
char \**argv
);
The configuration structure for the ``chroot`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CHROOT_Command;
cp - copy files
---------------
.. index:: cp
**SYNOPSYS:**
.. code:: c
cp \[-R \[-H | -L | -P]] \[-f | -i] \[-pv] src target
cp \[-R \[-H | -L] ] \[-f | -i] \[-NpPv] source_file ... target_directory
**DESCRIPTION:**
In the first synopsis form, the cp utility copies the contents of the
source_file to the target_file. In the second synopsis form, the contents of
each named source_file is copied to the destination target_directory. The names
of the files themselves are not changed. If cp detects an attempt to copy a
file to itself, the copy will fail.
The following options are available:
*-f*
For each existing destination pathname, attempt to overwrite it. If permissions
do not allow copy to succeed, remove it and create a new file, without
prompting for confirmation. (The -i option is ignored if the -f option is
specified.)
*-H*
If the -R option is specified, symbolic links on the command line are followed.
(Symbolic links encountered in the tree traversal are not followed.)
*-i*
Causes cp to write a prompt to the standard error output before copying a file
that would overwrite an existing file. If the response from the standard input
begins with the character y, the file copy is attempted.
*-L*
If the -R option is specified, all symbolic links are followed.
*-N*
When used with -p, do not copy file flags.
*-P*
No symbolic links are followed.
*-p*
Causes cp to preserve in the copy as many of the modification time, access
time, file flags, file mode, user ID, and group ID as allowed by permissions.
If the user ID and group ID cannot be preserved, no error message is displayed
and the exit value is not altered.
If the source file has its set user ID bit on and the user ID cannot be
preserved, the set user ID bit is not preserved in the copys permissions. If
the source file has its set group ID bit on and the group ID cannot be
preserved, the set group ID bit is not preserved in the copys permissions. If
the source file has both its set user ID and set group ID bits on, and either
the user ID or group ID cannot be preserved, neither the set user ID or set
group ID bits are preserved in the copys permissions.
*-R*
If source_file designates a directory, cp copies the directory and the entire
subtree connected at that point. This option also causes symbolic links to be
copied, rather than indirected through, and for cp to create special files
rather than copying them as normal files. Created directories have the same
mode as the corresponding source directory, unmodified by the processs umask.
*-v*
Cause cp to be verbose, showing files as they are copied.
For each destination file that already exists, its contents are overwritten if
permissions allow, but its mode, user ID, and group ID are unchanged.
In the second synopsis form, target_directory must exist unless there is only
one named source_file which is a directory and the -R flag is specified.
If the destination file does not exist, the mode of the source file is used as
modified by the file mode creation mask (umask, see csh(1)). If the source file
has its set user ID bit on, that bit is removed unless both the source file and
the destination file are owned by the same user. If the source file has its set
group ID bit on, that bit is removed unless both the source file and the
destination file are in the same group and the user is a member of that group.
If both the set user ID and set group ID bits are set, all of the above
conditions must be fulfilled or both bits are removed.
Appropriate permissions are required for file creation or overwriting.
Symbolic links are always followed unless the -R flag is set, in which case
symbolic links are not followed, by default. The -H or -L flags (in conjunction
with the -R flag), as well as the -P flag cause symbolic links to be followed
as described above. The -H and -L options are ignored unless the -R option is
specified. In addition, these options override eachsubhedading other and the
commands actions are determined by the last one specified.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``cp`` to
copy a file to a new name in the current directory:
.. code:: c
SHLL \[/] # cat joel
cat: joel: No such file or directory
SHLL \[/] # cp etc/passwd joel
SHLL \[/] # cat joel
root:\*:0:0:root::/:/bin/sh
rtems:\*:1:1:RTEMS Application::/:/bin/sh
tty:!:2:2:tty owner::/:/bin/false
SHLL \[/] # ls
drwxr-xr-x 1 root root 536 Jan 01 00:00 dev/
drwxr-xr-x 1 root root 1072 Jan 01 00:00 etc/
-rw-r--r-- 1 root root 102 Jan 01 00:00 joel
3 files 1710 bytes occupied
The following is an example of how to use ``cp`` to
copy one or more files to a destination directory and
use the same ``basename`` in the destination directory:
.. code:: c
SHLL \[/] # mkdir tmp
SHLL \[/] # ls tmp
0 files 0 bytes occupied
SHLL \[/] # cp /etc/passwd tmp
SHLL \[/] # ls /tmp
-rw-r--r-- 1 root root 102 Jan 01 00:01 passwd
1 files 102 bytes occupied
SHLL \[/] # cp /etc/passwd /etc/group /tmp
SHLL \[/] # ls /tmp
-rw-r--r-- 1 root root 102 Jan 01 00:01 passwd
-rw-r--r-- 1 root root 42 Jan 01 00:01 group
2 files 144 bytes occupied
SHLL \[/] #
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CP
.. index:: CONFIGURE_SHELL_COMMAND_CP
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CP`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CP`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_main_cp
The ``cp`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_main_cp(
int argc,
char \**argv
);
The configuration structure for the ``cp`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CP_Command;
**ORIGIN:**
The implementation and portions of the documentation for this
command are from NetBSD 4.0.
dd - convert and copy a file
----------------------------
.. index:: dd
**SYNOPSYS:**
.. code:: c
dd \[operands ...]
**DESCRIPTION:**
The dd utility copies the standard input to the standard output.
Input data is read and written in 512-byte blocks. If input reads are
short, input from multiple reads are aggregated to form the output
block. When finished, dd displays the number of complete and partial
input and output blocks and truncated input records to the standard
error output.
The following operands are available:
*bs=n*
Set both input and output block size, superseding the ibs and obs
operands. If no conversion values other than noerror, notrunc or sync
are specified, then each input block is copied to the output as a
single block without any aggregation of short blocks.
*cbs=n*
Set the conversion record size to n bytes. The conversion record size
is required by the record oriented conversion values.
*count=n*
Copy only n input blocks.
*files=n*
Copy n input files before terminating. This operand is only
applicable when the input device is a tape.
*ibs=n*
Set the input block size to n bytes instead of the default 512.
*if=file*
Read input from file instead of the standard input.
*obs=n*
Set the output block size to n bytes instead of the default 512.
*of=file*
Write output to file instead of the standard output. Any regular
output file is truncated unless the notrunc conversion value is
specified. If an initial portion of the output file is skipped (see
the seek operand) the output file is truncated at that point.
*seek=n*
Seek n blocks from the beginning of the output before copying. On
non-tape devices, a *lseek* operation is used. Otherwise, existing
blocks are read and the data discarded. If the seek operation is past
the end of file, space from the current end of file to the specified
offset is filled with blocks of NUL bytes.
*skip=n*
Skip n blocks from the beginning of the input before copying. On
input which supports seeks, a *lseek* operation is used. Otherwise,
input data is read and discarded. For pipes, the correct number of
bytes is read. For all other devices, the correct number of blocks is
read without distinguishing between a partial or complete block being
read.
*progress=n*
Switch on display of progress if n is set to any non-zero value. This
will cause a “.” to be printed (to the standard error output) for
every n full or partial blocks written to the output file.
*conv=value[,value...]*
Where value is one of the symbols from the following list.
*ascii, oldascii*
The same as the unblock value except that characters are translated
from EBCDIC to ASCII before the records are converted. (These values
imply unblock if the operand cbs is also specified.) There are two
conversion maps for ASCII. The value ascii specifies the recom-
mended one which is compatible with AT&T System V UNIX. The value
oldascii specifies the one used in historic AT&T and pre 4.3BSD-Reno
systems.
*block*
Treats the input as a sequence of newline or end-of-file terminated
variable length records independent of input and output block
boundaries. Any trailing newline character is discarded. Each
input record is converted to a fixed length output record where the
length is specified by the cbs operand. Input records shorter than
the conversion record size are padded with spaces. Input records
longer than the conversion record size are truncated. The number of
truncated input records, if any, are reported to the standard error
output at the completion of the copy.
*ebcdic, ibm, oldebcdic, oldibm*
The same as the block value except that characters are translated from
ASCII to EBCDIC after the records are converted. (These values imply
block if the operand cbs is also specified.) There are four
conversion maps for EBCDIC. The value ebcdic specifies the
recommended one which is compatible with AT&T System V UNIX. The
value ibm is a slightly different mapping, which is compatible with
the AT&T System V UNIX ibm value. The values oldebcdic and oldibm are
maps used in historic AT&T and pre 4.3BSD-Reno systems.
*lcase*
Transform uppercase characters into lowercase characters.
*noerror*
Do not stop processing on an input error. When an input error occurs,
a diagnostic message followed by the current input and output block
counts will be written to the standard error output in the same format
as the standard completion message. If the sync conversion is also
specified, any missing input data will be replaced with NUL bytes (or
with spaces if a block oriented conversion value was specified) and
processed as a normal input buffer. If the sync conversion is not
specified, the input block is omitted from the output. On input files
which are not tapes or pipes, the file offset will be positioned past
the block in which the error occurred using lseek(2).
*notrunc*
Do not truncate the output file. This will preserve any blocks in the
output file not explicitly written by dd. The notrunc value is not
supported for tapes.
*osync*
Pad the final output block to the full output block size. If the
input file is not a multiple of the output block size after
conversion, this conversion forces the final output block to be the
same size as preceding blocks for use on devices that require
regularly sized blocks to be written. This option is incompatible
with use of the bs=n block size specification.
*sparse*
If one or more non-final output blocks would consist solely of NUL
bytes, try to seek the output file by the required space instead of
filling them with NULs. This results in a sparse file on some file
systems.
*swab*
Swap every pair of input bytes. If an input buffer has an odd number
of bytes, the last byte will be ignored during swapping.
*sync*
Pad every input block to the input buffer size. Spaces are used for
pad bytes if a block oriented conversion value is specified, otherwise
NUL bytes are used.
*ucase*
Transform lowercase characters into uppercase characters.
*unblock*
Treats the input as a sequence of fixed length records independent of
input and output block boundaries. The length of the input records is
specified by the cbs operand. Any trailing space characters are
discarded and a newline character is appended.
Where sizes are specified, a decimal number of bytes is expected. Two
or more numbers may be separated by an “x” to indicate a product.
Each number may have one of the following optional suffixes:
*b*
Block; multiply by 512
*k*
Kibi; multiply by 1024 (1 KiB)
*m*
Mebi; multiply by 1048576 (1 MiB)
*g*
Gibi; multiply by 1073741824 (1 GiB)
*t*
Tebi; multiply by 1099511627776 (1 TiB)
*w*
Word; multiply by the number of bytes in an integer
When finished, dd displays the number of complete and partial input
and output blocks, truncated input records and odd-length
byte-swapping ritten. Partial output blocks to tape devices are
considered fatal errors. Otherwise, the rest of the block will be
written. Partial output blocks to character devices will produce a
warning message. A truncated input block is one where a variable
length record oriented conversion value was specified and the input
line was too long to fit in the conversion record or was not newline
terminated.
Normally, data resulting from input or conversion or both are
aggregated into output blocks of the specified size. After the end of
input is reached, any remaining output is written as a block. This
means that the final output block may be shorter than the output block
size.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``dd``:
.. code:: c
SHLL \[/] $ dd if=/nfs/boot-image of=/dev/hda1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DD
.. index:: CONFIGURE_SHELL_COMMAND_DD
This command is included in the default shell command set. When
building a custom command set, define``CONFIGURE_SHELL_COMMAND_DD`` to have this command included.
This command can be excluded from the shell command set by defining``CONFIGURE_SHELL_NO_COMMAND_DD`` when all shell commands have been
configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_dd
The ``dd`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_rtems_main_dd(
int argc,
char \**argv
);
The configuration structure for the ``dd`` has the following
prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DD_Command;
debugrfs - debug RFS file system
--------------------------------
.. index:: debugrfs
**SYNOPSYS:**
.. code:: c
debugrfs \[-hl] path command \[options]
**DESCRIPTION:**
The command provides debugging information for the RFS file system.
The options are:
*-h*
Print a help message.
*-l*
List the commands.
*path*
Path to the mounted RFS file system. The file system has to be mounted
to view to use this command.
The commands are:
*block start \[end]*
Display the contents of the blocks from start to end.
*data*
Display the file system data and configuration.
*dir bno*
Process the block as a directory displaying the entries.
*group start \[end]*
Display the group data from the start group to the end group.
*inode \[-aef] \[start] \[end]*
Display the inodes between start and end. If no start and end is
provides all inodes are displayed.
*-a*
Display all inodes. That is allocated and unallocated inodes.
*-e*
Search and display on inodes that have an error.
*-f*
Force display of inodes, even when in error.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``debugrfs``:
.. code:: c
SHLL \[/] $ debugrfs /c data
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DEBUGRFS
.. index:: CONFIGURE_SHELL_COMMAND_DEBUGRFS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_DEBUGRFS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_DEBUGRFS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_debugrfs
The ``debugrfs`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_rtems_main_debugrfs(
int argc,
char \**argv
);
The configuration structure for ``debugrfs`` has the following
prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DEBUGRFS_Command;
df - display file system disk space usage
-----------------------------------------
.. index:: df
**SYNOPSYS:**
.. code:: c
df \[-h] \[-B block_size]
**DESCRIPTION:**
This command print disk space usage for mounted file systems.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``df``:
.. code:: c
SHLL \[/] $ df -B 4K
Filesystem 4K-blocks Used Available Use% Mounted on
/dev/rda 124 1 124 0% /mnt/ramdisk
SHLL \[/] $ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/rda 495 1 494 0% /mnt/ramdisk
SHLL \[/] $ df -h
Filesystem Size Used Available Use% Mounted on
/dev/rda 495K 1K 494K 0% /mnt/ramdisk
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DF
.. index:: CONFIGURE_SHELL_COMMAND_DF
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_DF`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_DF`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_df
The ``df`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_main_df(
int argc,
char \**argv
);
The configuration structure for the ``df`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DF_Command;
dir - alias for ls
------------------
.. index:: dir
**SYNOPSYS:**
.. code:: c
dir \[dir]
**DESCRIPTION:**
This command is an alias or alternate name for the ``ls``.
See `ls - list files in the directory`_
for more information.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``dir``:
.. code:: c
SHLL \[/] $ dir
drwxr-xr-x 1 root root 536 Jan 01 00:00 dev/
drwxr-xr-x 1 root root 1072 Jan 01 00:00 etc/
2 files 1608 bytes occupied
SHLL \[/] $ dir etc
-rw-r--r-- 1 root root 102 Jan 01 00:00 passwd
-rw-r--r-- 1 root root 42 Jan 01 00:00 group
-rw-r--r-- 1 root root 30 Jan 01 00:00 issue
-rw-r--r-- 1 root root 28 Jan 01 00:00 issue.net
4 files 202 bytes occupied
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DIR
.. index:: CONFIGURE_SHELL_COMMAND_DIR
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_DIR`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_DIR`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_dir
The ``dir`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_dir(
int argc,
char \**argv
);
The configuration structure for the ``dir`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DIR_Command;
fdisk - format disk
-------------------
.. index:: fdisk
**SYNOPSYS:**
.. code:: c
fdisk
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_FDISK
.. index:: CONFIGURE_SHELL_COMMAND_FDISK
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_FDISK`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_FDISK`` when all
shell commands have been configured.
hexdump - ascii/dec/hex/octal dump
----------------------------------
.. index:: hexdump
**SYNOPSYS:**
.. code:: c
hexdump \[-bcCdovx] \[-e format_string] \[-f format_file] \[-n length]
\[-s skip] file ...
**DESCRIPTION:**
The hexdump utility is a filter which displays the specified files, or
the standard input, if no files are specified, in a user specified
format.
The options are as follows:
*-b*
One-byte octal display. Display the input offset in hexadecimal,
followed by sixteen space-separated, three column, zero-filled, bytes
of input data, in octal, per line.
*-c*
One-byte character display. Display the input offset in hexadecimal,
followed by sixteen space-separated, three column, space-filled,
characters of input data per line.
*-C*
Canonical hex+ASCII display. Display the input offset in hexadecimal,
followed by sixteen space-separated, two column, hexadecimal bytes,
followed by the same sixteen bytes in %_p format enclosed in “|”
characters.
*-d*
Two-byte decimal display. Display the input offset in hexadecimal,
followed by eight space-separated, five column, zero-filled, two-byte
units of input data, in unsigned decimal, per line.
*-e format_string*
Specify a format string to be used for displaying data.
*-f format_file*
Specify a file that contains one or more newline separated format
strings. Empty lines and lines whose first non-blank character is a
hash mark (#) are ignored.
*-n length*
Interpret only length bytes of input.
*-o*
Two-byte octal display. Display the input offset in hexadecimal,
followed by eight space-separated, six column, zerofilled, two byte
quantities of input data, in octal, per line.
*-s offset*
Skip offset bytes from the beginning of the input. By default, offset
is interpreted as a decimal number. With a leading 0x or 0X, offset
is interpreted as a hexadecimal number, otherwise, with a leading 0,
offset is interpreted as an octal number. Appending the character b,
k, or m to offset causes it to be interpreted as a multiple of 512,
1024, or 1048576, respectively.
*-v*
The -v option causes hexdump to display all input data. Without the
-v option, any number of groups of output lines, which would be
identical to the immediately preceding group of output lines (except
for the input offsets), are replaced with a line containing a single
asterisk.
*-x*
Two-byte hexadecimal display. Display the input offset in
hexadecimal, followed by eight, space separated, four column,
zero-filled, two-byte quantities of input data, in hexadecimal, per
line.
For each input file, hexdump sequentially copies the input to standard
output, transforming the data according to the format strings
specified by the -e and -f options, in the order that they were
specified.
*Formats*
A format string contains any number of format units, separated by
whitespace. A format unit contains up to three items: an iteration
count, a byte count, and a format.
The iteration count is an optional positive integer, which defaults to
one. Each format is applied iteration count times.
The byte count is an optional positive integer. If specified it
defines the number of bytes to be interpreted by each iteration of the
format.
If an iteration count and/or a byte count is specified, a single slash
must be placed after the iteration count and/or before the byte count
to disambiguate them. Any whitespace before or after the slash is
ignored.
The format is required and must be surrounded by double quote (“ “)
marks. It is interpreted as a fprintf-style format string (see*fprintf*), with the following exceptions:
- An asterisk (\*) may not be used as a field width or precision.
- A byte count or field precision is required for each “s” con-
version character (unlike the fprintf(3) default which prints the
entire string if the precision is unspecified).
- The conversion characters “h”, “l”, “n”, “p” and “q” are not
supported.
- The single character escape sequences described in the C standard
are supported:
NUL \\0
<alert character> \\a
<backspace> \\b
<form-feed> \\f
<newline> \\n
<carriage return> \\r
<tab> \\t
<vertical tab> \\v
Hexdump also supports the following additional conversion strings:
*_a[dox]*
Display the input offset, cumulative across input files, of the next
byte to be displayed. The appended characters d, o, and x specify the
display base as decimal, octal or hexadecimal respectively.
*_A[dox]*
Identical to the _a conversion string except that it is only performed
once, when all of the input data has been processed.
*_c*
Output characters in the default character set. Nonprinting
characters are displayed in three character, zero-padded octal, except
for those representable by standard escape notation (see above), which
are displayed as two character strings.
*_p*
Output characters in the default character set. Nonprinting
characters are displayed as a single “.”.
*_u*
Output US ASCII characters, with the exception that control characters
are displayed using the following, lower-case, names. Characters
greater than 0xff, hexadecimal, are displayed as hexadecimal
strings.
000 nul 001 soh 002 stx 003 etx 004 eot 005 enq
006 ack 007 bel 008 bs 009 ht 00A lf 00B vt
00C ff 00D cr 00E so 00F si 010 dle 011 dc1
012 dc2 013 dc3 014 dc4 015 nak 016 syn 017 etb
018 can 019 em 01A sub 01B esc 01C fs 01D gs
01E rs 01F us 07F del
The default and supported byte counts for the conversion characters
are as follows:
%_c, %_p, %_u, %c One byte counts only.
%d, %i, %o, %u, %X, %x Four byte default, one, two, four
and eight byte counts supported.
%E, %e, %f, %G, %g Eight byte default, four byte
counts supported.
The amount of data interpreted by each format string is the sum of the
data required by each format unit, which is the iteration count times
the byte count, or the iteration count times the number of bytes
required by the format if the byte count is not specified.
The input is manipulated in “blocks”, where a block is defined as
the largest amount of data specified by any format string. Format
strings interpreting less than an input blocks worth of data, whose
last format unit both interprets some number of bytes and does not
have a specified iteration count, have the iteration count incremented
until the entire input block has been processed or there is not enough
data remaining in the block to satisfy the format string.
If, either as a result of user specification or hexdump modifying the
iteration count as described above, an iteration count is greater than
one, no trailing whitespace characters are output during the last
iteration.
It is an error to specify a byte count as well as multiple conversion
characters or strings unless all but one of the conversion characters
or strings is _a or _A.
If, as a result of the specification of the -n option or end-of-file
being reached, input data only partially satisfies a format string,
the input block is zero-padded sufficiently to display all available
data (i.e. any format units overlapping the end of data will display
some num- ber of the zero bytes).
Further output by such format strings is replaced by an equivalent
number of spaces. An equivalent number of spaces is defined as the
number of spaces output by an s conversion character with the same
field width and precision as the original conversion character or
conversion string but with any “+”, “ ”, “#” conversion flag
characters removed, and ref- erencing a NULL string.
If no format strings are specified, the default display is equivalent
to specifying the -x option.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``hexdump``:
.. code:: c
SHLL \[/] $ hexdump -C -n 512 /dev/hda1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_HEXDUMP
.. index:: CONFIGURE_SHELL_COMMAND_HEXDUMP
This command is included in the default shell command set. When
building a custom command set, define``CONFIGURE_SHELL_COMMAND_HEXDUMP`` to have this command included.
This command can be excluded from the shell command set by defining``CONFIGURE_SHELL_NO_COMMAND_HEXDUMP`` when all shell commands have
been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_hexdump
The ``hexdump`` command is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_hexdump(
int argc,
char \**argv
);
The configuration structure for the ``hexdump`` has the following
prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_HEXDUMP_Command;
ln - make links
---------------
.. index:: ln
**SYNOPSYS:**
.. code:: c
ln \[-fhinsv] source_file \[target_file]
ln \[-fhinsv] source_file ... target_dir
**DESCRIPTION:**
The ln utility creates a new directory entry (linked file) which has
the same modes as the original file. It is useful for maintaining
multiple copies of a file in many places at once without using up
storage for the “copies”; instead, a link “points” to the original
copy. There are two types of links; hard links and symbolic links.
How a link “points” to a file is one of the differences between a
hard or symbolic link.
The options are as follows:
*-f*
Unlink any already existing file, permitting the link to occur.
*-h*
If the target_file or target_dir is a symbolic link, do not follow it.
This is most useful with the -f option, to replace a symlink which may
point to a directory.
*-i*
Cause ln to write a prompt to standard error if the target file
exists. If the response from the standard input begins with the
character y or Y, then unlink the target file so that the link may
occur. Otherwise, do not attempt the link. (The -i option overrides
any previous -f options.)
*-n*
Same as -h, for compatibility with other ln implementations.
*-s*
Create a symbolic link.
*-v*
Cause ln to be verbose, showing files as they are processed.
By default ln makes hard links. A hard link to a file is
indistinguishable from the original directory entry; any changes to a
file are effective independent of the name used to reference the file.
Hard links may not normally refer to directories and may not span file
systems.
A symbolic link contains the name of the file to which it is linked.
The referenced file is used when an *open* operation is performed on
the link. A *stat* on a symbolic link will return the linked-to
file; an *lstat* must be done to obtain information about the link.
The *readlink* call may be used to read the contents of a symbolic
link. Symbolic links may span file systems and may refer to
directories.
Given one or two arguments, ln creates a link to an existing file
source_file. If target_file is given, the link has that name;
target_file may also be a directory in which to place the link;
otherwise it is placed in the current directory. If only the
directory is specified, the link will be made to the last component of
source_file.
Given more than two arguments, ln makes links in target_dir to all the
named source files. The links made will have the same name as the
files being linked to.
**EXIT STATUS:**
The ``ln`` utility exits 0 on success, and >0 if an error occurs.
**NOTES:**
NONE
**EXAMPLES:**
.. code:: c
SHLL \[/] ln -s /dev/console /dev/con1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_LN
.. index:: CONFIGURE_SHELL_COMMAND_LN
This command is included in the default shell command set. When
building a custom command set, define``CONFIGURE_SHELL_COMMAND_LN`` to have this command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_LN`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_ln
The ``ln`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_rtems_main_ln(
int argc,
char \**argv
);
The configuration structure for the ``ln`` has the following
prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_LN_Command;
**ORIGIN:**
The implementation and portions of the documentation for this command
are from NetBSD 4.0.
ls - list files in the directory
--------------------------------
.. index:: ls
**SYNOPSYS:**
.. code:: c
ls \[dir]
**DESCRIPTION:**
This command displays the contents of the specified directory. If
no arguments are given, then it displays the contents of the current
working directory.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
This command currently does not display information on a set of
files like the POSIX ls(1). It only displays the contents of
entire directories.
**EXAMPLES:**
The following is an example of how to use ``ls``:
.. code:: c
SHLL \[/] $ ls
drwxr-xr-x 1 root root 536 Jan 01 00:00 dev/
drwxr-xr-x 1 root root 1072 Jan 01 00:00 etc/
2 files 1608 bytes occupied
SHLL \[/] $ ls etc
-rw-r--r-- 1 root root 102 Jan 01 00:00 passwd
-rw-r--r-- 1 root root 42 Jan 01 00:00 group
-rw-r--r-- 1 root root 30 Jan 01 00:00 issue
-rw-r--r-- 1 root root 28 Jan 01 00:00 issue.net
4 files 202 bytes occupied
SHLL \[/] $ ls dev etc
-rwxr-xr-x 1 rtems root 0 Jan 01 00:00 console
-rwxr-xr-x 1 root root 0 Jan 01 00:00 console_b
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_LS
.. index:: CONFIGURE_SHELL_COMMAND_LS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_LS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_LS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_ls
The ``ls`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_ls(
int argc,
char \**argv
);
The configuration structure for the ``ls`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_LS_Command;
md5 - compute the Md5 hash of a file or list of files
-----------------------------------------------------
.. index:: md5
**SYNOPSYS:**
.. code:: c
md5 <files>
**DESCRIPTION:**
This command prints the MD5 of a file. You can provide one or more
files on the command line and a hash for each file is printed in a
single line of output.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``md5``:
.. code:: c
SHLL \[/] $ md5 shell-init
MD5 (shell-init) = 43b4d2e71b47db79eae679a2efeacf31
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MD5
.. index:: CONFIGURE_SHELL_COMMAND_MD5
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MD5`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MD5`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_md5
The ``df`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_main_md5(
int argc,
char \**argv
);
The configuration structure for the ``md5`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MD5_Command;
mkdir - create a directory
--------------------------
.. index:: mkdir
**SYNOPSYS:**
.. code:: c
mkdir dir \[dir1 .. dirN]
**DESCRIPTION:**
This command creates the set of directories in the order they
are specified on the command line. If an error is encountered
making one of the directories, the command will continue to
attempt to create the remaining directories on the command line.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
If this command is invoked with no arguments, nothing occurs.
The user must have sufficient permissions to create the directory.
For the ``fileio`` test provided with RTEMS, this means the user
must login as ``root`` not ``rtems``.
**EXAMPLES:**
The following is an example of how to use ``mkdir``:
.. code:: c
SHLL \[/] # ls
drwxr-xr-x 1 root root 536 Jan 01 00:00 dev/
drwxr-xr-x 1 root root 1072 Jan 01 00:00 etc/
2 files 1608 bytes occupied
SHLL \[/] # mkdir joel
SHLL \[/] # ls joel
0 files 0 bytes occupied
SHLL \[/] # cp etc/passwd joel
SHLL \[/] # ls joel
-rw-r--r-- 1 root root 102 Jan 01 00:02 passwd
1 files 102 bytes occupied
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MKDIR
.. index:: CONFIGURE_SHELL_COMMAND_MKDIR
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MKDIR`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MKDIR`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mkdir
The ``mkdir`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mkdir(
int argc,
char \**argv
);
The configuration structure for the ``mkdir`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MKDIR_Command;
mldos - DOSFS file system format
--------------------------------
.. index:: pwd
**SYNOPSYS:**
.. code:: c
mkdir \[-V label] \[-s sectors/cluster] \[-r size] \[-v] path
**DESCRIPTION:**
This command formats a block device entry with the DOSFS file system.
*-V label*
*-s sectors/cluster*
*-r size*
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``mkdos``:
.. code:: c
SHLL \[/] $ mkdos /dev/rda1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MKDOS
.. index:: CONFIGURE_SHELL_COMMAND_MKDOS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MKDOS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MKDOS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mkdos
The ``mkdos`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mkdos(
int argc,
char \**argv
);
The configuration structure for the ``mkdos`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MKDOS_Command;
mknod - make device special file
--------------------------------
.. index:: mknod
**SYNOPSYS:**
.. code:: c
mknod \[-rR] \[-F fmt] \[-g gid] \[-m mode] \[-u uid] name \[c | b]
\[driver | major] minor
mknod \[-rR] \[-F fmt] \[-g gid] \[-m mode] \[-u uid] name \[c | b]
major unit subunit
mknod \[-rR] \[-g gid] \[-m mode] \[-u uid] name \[c | b] number
mknod \[-rR] \[-g gid] \[-m mode] \[-u uid] name p
**DESCRIPTION:**
The mknod command creates device special files, or fifos. Normally
the shell script /dev/MAKEDEV is used to create special files for
commonly known devices; it executes mknod with the appropriate
arguments and can make all the files required for the device.
To make nodes manually, the arguments are:
*-r*
Replace an existing file if its type is incorrect.
*-R*
Replace an existing file if its type is incorrect. Correct the
mode, user and group.
*-g gid*
Specify the group for the device node. The gid operand may be a
numeric group ID or a group name. If a group name is also a numeric
group ID, the operand is used as a group name. Precede a numeric
group ID with a # to stop it being treated as a name.
*-m mode*
Specify the mode for the device node. The mode may be absolute or
symbolic, see *chmod*.
*-u uid*
Specify the user for the device node. The uid operand may be a
numeric user ID or a user name. If a user name is also a numeric user
ID, the operand is used as a user name. Precede a numeric user ID
with a # to stop it being treated as a name.
*name*
Device name, for example “tty” for a termios serial device or “hd”
for a disk.
*b | c | p*
Type of device. If the device is a block type device such as a tape
or disk drive which needs both cooked and raw special files, the type
is b. All other devices are character type devices, such as terminal
and pseudo devices, and are type c. Specifying p creates fifo files.
*driver | major*
The major device number is an integer number which tells the kernel
which device driver entry point to use. If the device driver is
configured into the current kernel it may be specified by driver name
or major number.
*minor*
The minor device number tells the kernel which one of several similar
devices the node corresponds to; for example, it may be a specific
serial port or pty.
*unit and subunit*
The unit and subunit numbers select a subset of a device; for example,
the unit may specify a particular disk, and the subunit a partition on
that disk. (Currently this form of specification is only supported
by the bsdos format, for compatibility with the BSD/OS mknod).
*number*
A single opaque device number. Useful for netbooted computers which
require device numbers packed in a format that isnt supported by
-F.
**EXIT STATUS:**
The ``mknod`` utility exits 0 on success, and >0 if an error occurs.
**NOTES:**
NONE
**EXAMPLES:**
.. code:: c
SHLL \[/] mknod c 3 0 /dev/ttyS10
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MKNOD
.. index:: CONFIGURE_SHELL_COMMAND_MKNOD
This command is included in the default shell command set. When
building a custom command set, define``CONFIGURE_SHELL_COMMAND_MKNOD`` to have this command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MKNOD`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mknod
The ``mknod`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mknod(
int argc,
char \**argv
);
The configuration structure for the ``mknod`` has the following
prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MKNOD_Command;
**ORIGIN:**
The implementation and portions of the documentation for this command
are from NetBSD 4.0.
mkrfs - format RFS file system
------------------------------
.. index:: mkrfs
**SYNOPSYS:**
.. code:: c
mkrfs \[-vsbiIo] device
**DESCRIPTION:**
Format the block device with the RTEMS File System (RFS). The default
configuration with not parameters selects a suitable block size based
on the size of the media being formatted.
The media is broken up into groups of blocks. The number of blocks in
a group is based on the number of bits a block contains. The large a
block the more blocks a group contains and the fewer groups in the
file system.
The following options are provided:
*-v*
Display configuration and progress of the format.
*-s*
Set the block size in bytes.
*-b*
The number of blocks in a group. The block count must be equal or less
than the number of bits in a block.
*-i*
Number of inodes in a group. The inode count must be equal or less
than the number of bits in a block.
*-I*
Initialise the inodes. The default is not to initialise the inodes and
to rely on the inode being initialised when allocated. Initialising
the inode table helps recovery if a problem appears.
*-o*
Integer percentage of the media used by inodes. The default is 1%.
*device*
Path of the device to format.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``mkrfs``:
.. code:: c
SHLL \[/] $ mkrfs /dev/fdda
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MKRFS
.. index:: CONFIGURE_SHELL_COMMAND_MKRFS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MKRFS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MKRFS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mkrfs
The ``mkrfs`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mkrfs(
int argc,
char \**argv
);
The configuration structure for ``mkrfs`` has the following
prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MKRFS_Command;
mount - mount disk
------------------
.. index:: mount
**SYNOPSYS:**
.. code:: c
mount \[-t fstype] \[-r] \[-L] device path
**DESCRIPTION:**
The ``mount`` command will mount a block device to a mount point
using the specified file system. The files systems are:
- msdos - MSDOS File System
- tftp - TFTP Network File System
- ftp - FTP Network File System
- nfs - Network File System
- rfs - RTEMS File System
When the file system type is msdos or rfs the driver is a "block
device driver" node present in the file system. The driver is ignored
with the tftp and ftp file systems. For the nfs file system the
driver is the host:/path string that described NFS host and the
exported file system path.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The mount point must exist.
The services offered by each file-system vary. For example you cannot list the
directory of a TFTP file-system as this server is not provided in the TFTP
protocol. You need to check each file-systems documentation for the services
provided.
**EXAMPLES:**
Mount the Flash Disk driver to the /fd mount point:
.. code:: c
SHLL \[/] $ mount -t msdos /dev/flashdisk0 /fd
Mount the NFS file system exported path bar by host foo:
.. code:: c
$ mount -t nfs foo:/bar /nfs
Mount the TFTP file system on /tftp:
.. code:: c
$ mount -t tftp /tftp
To access the TFTP files on server 10.10.10.10:
.. code:: c
$ cat /tftp/10.10.10.10/test.txt
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MOUNT
.. index:: CONFIGURE_SHELL_COMMAND_MOUNT
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MOUNT`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MOUNT`` when all
shell commands have been configured.
The mount command includes references to file-system code. If you do not wish
to include file-system that you do not use do not define the mount command
support for that file-system. The file-system mount command defines are:
- msdos - CONFIGURE_SHELL_MOUNT_MSDOS
- tftp - CONFIGURE_SHELL_MOUNT_TFTP
- ftp - CONFIGURE_SHELL_MOUNT_FTP
- nfs - CONFIGURE_SHELL_MOUNT_NFS
- rfs - CONFIGURE_SHELL_MOUNT_RFS
An example configuration is:
.. code:: c
#define CONFIGURE_SHELL_MOUNT_MSDOS
#ifdef RTEMS_NETWORKING
#define CONFIGURE_SHELL_MOUNT_TFTP
#define CONFIGURE_SHELL_MOUNT_FTP
#define CONFIGURE_SHELL_MOUNT_NFS
#define CONFIGURE_SHELL_MOUNT_RFS
#endif
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mount
The ``mount`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mount(
int argc,
char \**argv
);
The configuration structure for the ``mount`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MOUNT_Command;
mv - move files
---------------
.. index:: mv
**SYNOPSYS:**
.. code:: c
mv \[-fiv] source_file target_file
mv \[-fiv] source_file... target_file
**DESCRIPTION:**
In its first form, the mv utility renames the file named by the source
operand to the destination path named by the target operand. This
form is assumed when the last operand does not name an already
existing directory.
In its second form, mv moves each file named by a source operand to a
destination file in the existing directory named by the directory
operand. The destination path for each operand is the pathname
produced by the concatenation of the last operand, a slash, and the
final pathname component of the named file.
The following options are available:
*-f*
Do not prompt for confirmation before overwriting the destination
path.
*-i*
Causes mv to write a prompt to standard error before moving a file
that would overwrite an existing file. If the response from the
standard input begins with the character y, the move is attempted.
*-v*
Cause mv to be verbose, showing files as they are processed.
The last of any -f or -i options is the one which affects mvs
behavior.
It is an error for any of the source operands to specify a nonexistent
file or directory.
It is an error for the source operand to specify a directory if the
target exists and is not a directory.
If the destination path does not have a mode which permits writing, mv
prompts the user for confirmation as specified for the -i option.
Should the *rename* call fail because source and target are on
different file systems, ``mv`` will remove the destination file,
copy the source file to the destination, and then remove the source.
The effect is roughly equivalent to:
.. code:: c
rm -f destination_path && \\
cp -PRp source_file destination_path && \\
rm -rf source_file
**EXIT STATUS:**
The ``mv`` utility exits 0 on success, and >0 if an error occurs.
**NOTES:**
NONE
**EXAMPLES:**
.. code:: c
SHLL \[/] mv /dev/console /dev/con1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MV
.. index:: CONFIGURE_SHELL_COMMAND_MV
This command is included in the default shell command set. When
building a custom command set, define``CONFIGURE_SHELL_COMMAND_MV`` to have this command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MV`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_main_mv
The ``mv`` command is implemented by a C language function which
has the following prototype:
.. code:: c
int rtems_shell_main_mv(
int argc,
char \**argv
);
The configuration structure for the ``mv`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MV_Command;
**ORIGIN:**
The implementation and portions of the documentation for this command
are from NetBSD 4.0.
pwd - print work directory
--------------------------
.. index:: pwd
**SYNOPSYS:**
.. code:: c
pwd
**DESCRIPTION:**
This command prints the fully qualified filename of the current
working directory.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``pwd``:
.. code:: c
SHLL \[/] $ pwd
/
SHLL \[/] $ cd dev
SHLL \[/dev] $ pwd
/dev
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_PWD
.. index:: CONFIGURE_SHELL_COMMAND_PWD
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_PWD`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_PWD`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_pwd
The ``pwd`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_pwd(
int argc,
char \**argv
);
The configuration structure for the ``pwd`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_PWD_Command;
rmdir - remove empty directories
--------------------------------
.. index:: rmdir
**SYNOPSYS:**
.. code:: c
rmdir \[dir1 .. dirN]
**DESCRIPTION:**
This command removes the specified set of directories. If no
directories are provided on the command line, no actions are taken.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
This command is a implemented using the ``rmdir(2)`` system
call and all reasons that call may fail apply to this command.
**EXAMPLES:**
The following is an example of how to use ``rmdir``:
.. code:: c
SHLL \[/] # mkdir joeldir
SHLL \[/] # rmdir joeldir
SHLL \[/] # ls joeldir
joeldir: No such file or directory.
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_RMDIR
.. index:: CONFIGURE_SHELL_COMMAND_RMDIR
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_RMDIR`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_RMDIR`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_rmdir
The ``rmdir`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_rmdir(
int argc,
char \**argv
);
The configuration structure for the ``rmdir`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_RMDIR_Command;
rm - remove files
-----------------
.. index:: rm
**SYNOPSYS:**
.. code:: c
rm file1 \[file2 ... fileN]
**DESCRIPTION:**
This command deletes a name from the filesystem. If the specified file name
was the last link to a file and there are no ``open`` file descriptor
references to that file, then it is deleted and the associated space in
the file system is made available for subsequent use.
If the filename specified was the last link to a file but there
are open file descriptor references to it, then the file will
remain in existence until the last file descriptor referencing
it is closed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``rm``:
.. code:: c
SHLL \[/] # cp /etc/passwd tmpfile
SHLL \[/] # cat tmpfile
root:\*:0:0:root::/:/bin/sh
rtems:\*:1:1:RTEMS Application::/:/bin/sh
tty:!:2:2:tty owner::/:/bin/false
SHLL \[/] # rm tmpfile
SHLL \[/] # cat tmpfile
cat: tmpfile: No such file or directory
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_RM
.. index:: CONFIGURE_SHELL_COMMAND_RM
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_RM`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_RM`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_main_rm
The ``rm`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_main_rm(
int argc,
char \**argv
);
The configuration structure for the ``rm`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_RM_Command;
umask - set file mode creation mask
-----------------------------------
.. index:: umask
**SYNOPSYS:**
.. code:: c
umask \[new_umask]
**DESCRIPTION:**
This command sets the user file creation mask to ``new_umask``. The
argument ``new_umask`` may be octal, hexadecimal, or decimal.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
This command does not currently support symbolic mode masks.
**EXAMPLES:**
The following is an example of how to use ``umask``:
.. code:: c
SHLL \[/] $ umask
022
SHLL \[/] $ umask 0666
0666
SHLL \[/] $ umask
0666
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_UMASK
.. index:: CONFIGURE_SHELL_COMMAND_UMASK
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_UMASK`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_UMASK`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_umask
The ``umask`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_umask(
int argc,
char \**argv
);
The configuration structure for the ``umask`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_UMASK_Command;
unmount - unmount disk
----------------------
.. index:: unmount
**SYNOPSYS:**
.. code:: c
unmount path
**DESCRIPTION:**
This command unmounts the device at the specified ``path``.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
TBD - Surely there must be some warnings to go here.
**EXAMPLES:**
The following is an example of how to use ``unmount``:
.. code:: c
EXAMPLE_TBD
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_UNMOUNT
.. index:: CONFIGURE_SHELL_COMMAND_UNMOUNT
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_UNMOUNT`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_UNMOUNT`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_unmount
The ``unmount`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_unmount(
int argc,
char \**argv
);
The configuration structure for the ``unmount`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_UNMOUNT_Command;
.. COMMENT: COPYRIGHT (c) 1988-2012.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.
Memory Commands
###############
Introduction
============
The RTEMS shell has the following memory commands:
- ``mdump`` - Display contents of memory
- ``wdump`` - Display contents of memory (word)
- ``ldump`` - Display contents of memory (longword)
- ``medit`` - Modify contents of memory
- ``mfill`` - File memory with pattern
- ``mmove`` - Move contents of memory
- ``malloc`` - Obtain information on C Program Heap
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.
mdump - display contents of memory
----------------------------------
.. index:: mdump
**SYNOPSYS:**
.. code:: c
mdump \[address \[length \[size]]]
**DESCRIPTION:**
This command displays the contents of memory at the ``address``
and ``length`` in ``size`` byte units specified on the command line.
When ``size`` is not provided, it defaults to ``1`` byte units.
Values of ``1``, ``2``, and ``4`` are valid; all others will
cause an error to be reported.
When ``length`` is not provided, it defaults to ``320`` which
is twenty lines of output with sixteen bytes of output per line.
When ``address`` is not provided, it defaults to ``0x00000000``.
**EXIT STATUS:**
This command always returns 0 to indicate success.
**NOTES:**
Dumping memory from a non-existent address may result in an unrecoverable
program fault.
**EXAMPLES:**
The following is an example of how to use ``mdump``:
.. code:: c
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 ..`....... ..(..
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MDUMP
.. index:: CONFIGURE_SHELL_COMMAND_MDUMP
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MDUMP`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MDUMP`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mdump
The ``mdump`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mdump(
int argc,
char \**argv
);
The configuration structure for the ``mdump`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MDUMP_Command;
wdump - display contents of memory (word)
-----------------------------------------
.. index:: wdump
**SYNOPSYS:**
.. code:: c
wdump \[address \[length]]
**DESCRIPTION:**
This command displays the contents of memory at the ``address``
and ``length`` in bytes specified on the command line.
This command is equivalent to ``mdump address length 2``.
When ``length`` is not provided, it defaults to ``320`` which
is twenty lines of output with eight words of output per line.
When ``address`` is not provided, it defaults to ``0x00000000``.
**EXIT STATUS:**
This command always returns 0 to indicate success.
**NOTES:**
Dumping memory from a non-existent address may result in an unrecoverable
program fault.
**EXAMPLES:**
The following is an example of how to use ``wdump``:
.. code:: c
SHLL \[/] $ wdump 0x02010000 32
0x02010000 0201 08D8 0201 08C0-0201 08AC 0201 0874 ...............t
0x02010010 0201 0894 0201 0718-0201 0640 0201 0798 ...............
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_WDUMP
.. index:: CONFIGURE_SHELL_COMMAND_WDUMP
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_WDUMP`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_WDUMP`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_wdump
The ``wdump`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_wdump(
int argc,
char \**argv
);
The configuration structure for the ``wdump`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_WDUMP_Command;
ldump - display contents of memory (longword)
---------------------------------------------
.. index:: ldump
**SYNOPSYS:**
.. code:: c
ldump \[address \[length]]
**DESCRIPTION:**
This command displays the contents of memory at the ``address``
and ``length`` in bytes specified on the command line.
This command is equivalent to ``mdump address length 4``.
When ``length`` is not provided, it defaults to ``320`` which
is twenty lines of output with four longwords of output per line.
When ``address`` is not provided, it defaults to ``0x00000000``.
**EXIT STATUS:**
This command always returns 0 to indicate success.
**NOTES:**
Dumping memory from a non-existent address may result in an unrecoverable
program fault.
**EXAMPLES:**
The following is an example of how to use ``ldump``:
.. code:: c
SHLL \[/] $ ldump 0x02010000 32
0x02010000 020108D8 020108C0-020108AC 02010874 ...............t
0x02010010 020 0894 02010718-02010640 02010798 ...............
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_LDUMP
.. index:: CONFIGURE_SHELL_COMMAND_LDUMP
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_LDUMP`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_LDUMP`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_ldump
The ``ldump`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_ldump(
int argc,
char \**argv
);
The configuration structure for the ``ldump`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_LDUMP_Command;
medit - modify contents of memory
---------------------------------
.. index:: medit
**SYNOPSYS:**
.. code:: c
medit address value1 \[value2 ... valueN]
**DESCRIPTION:**
This command is used to modify the contents of the memory starting
at ``address`` using the octets specified by the parameters``value1`` through ``valueN``.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
Dumping memory from a non-existent address may result in an unrecoverable
program fault.
**EXAMPLES:**
The following is an example of how to use ``medit``:
.. code:: c
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.."...!.
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MEDIT
.. index:: CONFIGURE_SHELL_COMMAND_MEDIT
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MEDIT`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MEDIT`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_medit
The ``medit`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_medit(
int argc,
char \**argv
);
The configuration structure for the ``medit`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MEDIT_Command;
mfill - file memory with pattern
--------------------------------
.. index:: mfill
**SYNOPSYS:**
.. code:: c
mfill address length value
**DESCRIPTION:**
This command is used to fill the memory starting at ``address``
for the specified ``length`` in octets when the specified at``value``.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
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.
**EXAMPLES:**
In this example, the address used (``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 ``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 ``mfill`` command, the Stack Checker detect the pattern
has been corrupted and generates a fatal error.
.. code:: c
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
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MFILL
.. index:: CONFIGURE_SHELL_COMMAND_MFILL
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MFILL`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MFILL`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mfill
The ``mfill`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mfill(
int argc,
char \**argv
);
The configuration structure for the ``mfill`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MFILL_Command;
mmove - move contents of memory
-------------------------------
.. index:: mmove
**SYNOPSYS:**
.. code:: c
mmove dst src length
**DESCRIPTION:**
This command is used to copy the contents of the memory
starting at ``src`` to the memory located at ``dst``
for the specified ``length`` in octets.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``mmove``:
.. code:: c
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..".....
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MMOVE
.. index:: CONFIGURE_SHELL_COMMAND_MMOVE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MMOVE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MMOVE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_mmove
The ``mmove`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_mmove(
int argc,
char \**argv
);
The configuration structure for the ``mmove`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MMOVE_Command;
malloc - obtain information on C program heap
---------------------------------------------
.. index:: malloc
**SYNOPSYS:**
.. code:: c
malloc \[walk]
**DESCRIPTION:**
This command prints information about the current state of the C Program Heap
used by the ``malloc()`` family of calls if no or invalid options are passed
to the command. This includes the following information:
- Number of free blocks
- Largest free block
- Total bytes free
- Number of used blocks
- Largest used block
- Total bytes used
- Size of the allocatable area in bytes
- Minimum free size ever in bytes
- Maximum number of free blocks ever
- Maximum number of blocks searched ever
- Lifetime number of bytes allocated
- Lifetime number of bytes freed
- Total number of searches
- Total number of successful allocations
- Total number of failed allocations
- Total number of successful frees
- Total number of successful resizes
When the subcommand ``walk`` is specified, then a heap walk will be
performed and information about each block is printed out.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use the ``malloc`` command.
.. code:: c
SHLL \[/] $ malloc
C Program Heap and RTEMS Workspace are the same.
Number of free blocks: 2
Largest free block: 266207504
Total bytes free: 266208392
Number of used blocks: 167
Largest used block: 16392
Total bytes used: 83536
Size of the allocatable area in bytes: 266291928
Minimum free size ever in bytes: 266207360
Maximum number of free blocks ever: 6
Maximum number of blocks searched ever: 5
Lifetime number of bytes allocated: 91760
Lifetime number of bytes freed: 8224
Total number of searches: 234
Total number of successful allocations: 186
Total number of failed allocations: 0
Total number of successful frees: 19
Total number of successful resizes: 0
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
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_MALLOC
.. index:: CONFIGURE_SHELL_COMMAND_MALLOC
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_MALLOC`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_MALLOC`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_malloc
The ``malloc`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_malloc(
int argc,
char \**argv
);
The configuration structure for the ``malloc`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_MALLOC_Command;
.. COMMENT: COPYRIGHT (c) 1988-2008.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.
RTEMS Specific Commands
#######################
Introduction
============
The RTEMS shell has the following RTEMS specific commands:
- ``shutdown`` - Shutdown the system
- ``cpuuse`` - print or reset per thread cpu usage
- ``stackuse`` - print per thread stack usage
- ``perioduse`` - print or reset per period usage
- ``profreport`` - print a profiling report
- ``wkspace`` - Display information on Executive Workspace
- ``config`` - Show the system configuration.
- ``itask`` - List init tasks for the system
- ``extension`` - Display information about extensions
- ``task`` - Display information about tasks
- ``queue`` - Display information about message queues
- ``sema`` - display information about semaphores
- ``region`` - display information about regions
- ``part`` - display information about partitions
- ``object`` - Display information about RTEMS objects
- ``driver`` - Display the RTEMS device driver table
- ``dname`` - Displays information about named drivers
- ``pthread`` - Displays information about POSIX threads
Commands
========
This section details the RTEMS Specific 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.
shutdown - Shutdown the system
------------------------------
.. index:: shutdown
**SYNOPSYS:**
.. code:: c
shutdown
**DESCRIPTION:**
This command is used to shutdown the RTEMS application.
**EXIT STATUS:**
This command does not return.
**NOTES:**
**EXAMPLES:**
The following is an example of how to use ``shutdown``:
.. code:: c
SHLL \[/] $ shutdown
System shutting down at user request
The user will not see another prompt and the system will
shutdown.
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_SHUTDOWN
.. index:: CONFIGURE_SHELL_COMMAND_SHUTDOWN
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_SHUTDOWN`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_SHUTDOWN`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
The configuration structure for the ``shutdown`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_SHUTDOWN_Command;
cpuuse - print or reset per thread cpu usage
--------------------------------------------
.. index:: cpuuse
**SYNOPSYS:**
.. code:: c
cpuuse \[-r]
**DESCRIPTION:**
This command may be used to print a report on the per thread
cpu usage or to reset the per thread CPU usage statistics. When
invoked with the ``-r`` option, the CPU usage statistics
are reset.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The granularity of the timing information reported is dependent
upon the BSP and the manner in which RTEMS was built. In the
default RTEMS configuration, if the BSP supports nanosecond
granularity timestamps, then the information reported will be
highly accurate. Otherwise, the accuracy of the information
reported is limited by the clock tick quantum.
**EXAMPLES:**
The following is an example of how to use ``cpuuse``:
.. code:: c
SHLL \[/] $ cpuuse
CPU Usage by thread
ID NAME SECONDS PERCENT
0x09010001 IDLE 49.745393 98.953
0x0a010001 UI1 0.000000 0.000
0x0a010002 SHLL 0.525928 1.046
Time since last CPU Usage reset 50.271321 seconds
SHLL \[/] $ cpuuse -r
Resetting CPU Usage information
SHLL \[/] $ cpuuse
CPU Usage by thread
ID NAME SECONDS PERCENT
0x09010001 IDLE 0.000000 0.000
0x0a010001 UI1 0.000000 0.000
0x0a010002 SHLL 0.003092 100.000
Time since last CPU Usage reset 0.003092 seconds
In the above example, the system had set idle for nearly
a minute when the first report was generated. The``cpuuse -r`` and ``cpuuse`` commands were pasted
from another window so were executed with no gap between.
In the second report, only the ``shell`` thread has
run since the CPU Usage was reset. It has consumed
approximately 3.092 milliseconds of CPU time processing
the two commands and generating the output.
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CPUUSE
.. index:: CONFIGURE_SHELL_COMMAND_CPUUSE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CPUUSE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CPUUSE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_cpuuse
The ``cpuuse`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_cpuuse(
int argc,
char \**argv
);
The configuration structure for the ``cpuuse`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CPUUSE_Command;
stackuse - print per thread stack usage
---------------------------------------
.. index:: stackuse
**SYNOPSYS:**
.. code:: c
stackuse
**DESCRIPTION:**
This command prints a Stack Usage Report for all of the tasks
and threads in the system. On systems which support it, the
usage of the interrupt stack is also included in the report.
**EXIT STATUS:**
This command always succeeds and returns 0.
**NOTES:**
The ``CONFIGURE_STACK_CHECKER_ENABLED`` ``confdefs.h`` constant
must be defined when the application is configured for this
command to have any information to report.
**EXAMPLES:**
The following is an example of how to use ``stackuse``:
.. code:: c
SHLL \[/] $ stackuse
Stack usage by thread
ID NAME LOW HIGH CURRENT AVAILABLE USED
0x09010001 IDLE 0x023d89a0 - 0x023d99af 0x023d9760 4096 608
0x0a010001 UI1 0x023d9f30 - 0x023daf3f 0x023dad18 4096 1804
0x0a010002 SHLL 0x023db4c0 - 0x023df4cf 0x023de9d0 16384 5116
0xffffffff INTR 0x023d2760 - 0x023d375f 0x00000000 4080 316
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_STACKUSE
.. index:: CONFIGURE_SHELL_COMMAND_STACKUSE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_STACKUSE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_STACKUSE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_stackuse
The ``stackuse`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_stackuse(
int argc,
char \**argv
);
The configuration structure for the ``stackuse`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_STACKUSE_Command;
perioduse - print or reset per period usage
-------------------------------------------
.. index:: perioduse
**SYNOPSYS:**
.. code:: c
perioduse \[-r]
**DESCRIPTION:**
This command may be used to print a statistics report on the rate
monotonic periods in the application or to reset the rate monotonic
period usage statistics. When invoked with the ``-r`` option, the
usage statistics are reset.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
The granularity of the timing information reported is dependent
upon the BSP and the manner in which RTEMS was built. In the
default RTEMS configuration, if the BSP supports nanosecond
granularity timestamps, then the information reported will be
highly accurate. Otherwise, the accuracy of the information
reported is limited by the clock tick quantum.
**EXAMPLES:**
The following is an example of how to use ``perioduse``:
.. code:: c
SHLL \[/] $ perioduse
Period information by period
--- CPU times are in seconds ---
--- Wall times are in seconds ---
ID OWNER COUNT MISSED CPU TIME WALL TIME
MIN/MAX/AVG MIN/MAX/AVG
0x42010001 TA1 502 0 0:000039/0:042650/0:004158 0:000039/0:020118/0:002848
0x42010002 TA2 502 0 0:000041/0:042657/0:004309 0:000041/0:020116/0:002848
0x42010003 TA3 501 0 0:000041/0:041564/0:003653 0:000041/0:020003/0:002814
0x42010004 TA4 501 0 0:000043/0:044075/0:004911 0:000043/0:020004/0:002814
0x42010005 TA5 10 0 0:000065/0:005413/0:002739 0:000065/1:000457/0:041058
MIN/MAX/AVG MIN/MAX/AVG
SHLL \[/] $ perioduse -r
Resetting Period Usage information
SHLL \[/] $ perioduse
--- CPU times are in seconds ---
--- Wall times are in seconds ---
ID OWNER COUNT MISSED CPU TIME WALL TIME
MIN/MAX/AVG MIN/MAX/AVG
0x42010001 TA1 0 0
0x42010002 TA2 0 0
0x42010003 TA3 0 0
0x42010004 TA4 0 0
0x42010005 TA5 0 0
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_PERIODUSE
.. index:: CONFIGURE_SHELL_COMMAND_PERIODUSE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_PERIODUSE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_PERIODUSE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_perioduse
The ``perioduse`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_perioduse(
int argc,
char \**argv
);
The configuration structure for the ``perioduse`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_PERIODUSE_Command;
profreport - print a profiling report
-------------------------------------
.. index:: profreport
**SYNOPSYS:**
.. code:: c
profreport
**DESCRIPTION:**
This command may be used to print a profiling report.
**EXIT STATUS:**
This command returns 0.
**NOTES:**
Profiling must be enabled at build configuration time to get profiling
information.
**EXAMPLES:**
The following is an example of how to use ``profreport``:
.. code:: c
SHLL \[/] $ profreport
<ProfilingReport name="Shell">
<PerCPUProfilingReport processorIndex="0">
<MaxThreadDispatchDisabledTime unit="ns">10447</MaxThreadDispatchDisabledTime>
<MeanThreadDispatchDisabledTime unit="ns">2</MeanThreadDispatchDisabledTime>
<TotalThreadDispatchDisabledTime unit="ns">195926627</TotalThreadDispatchDisabledTime>
<ThreadDispatchDisabledCount>77908688</ThreadDispatchDisabledCount>
<MaxInterruptDelay unit="ns">0</MaxInterruptDelay>
<MaxInterruptTime unit="ns">688</MaxInterruptTime>
<MeanInterruptTime unit="ns">127</MeanInterruptTime>
<TotalInterruptTime unit="ns">282651157</TotalInterruptTime>
<InterruptCount>2215855</InterruptCount>
</PerCPUProfilingReport>
<PerCPUProfilingReport processorIndex="1">
<MaxThreadDispatchDisabledTime unit="ns">9053</MaxThreadDispatchDisabledTime>
<MeanThreadDispatchDisabledTime unit="ns">41</MeanThreadDispatchDisabledTime>
<TotalThreadDispatchDisabledTime unit="ns">3053830335</TotalThreadDispatchDisabledTime>
<ThreadDispatchDisabledCount>73334202</ThreadDispatchDisabledCount>
<MaxInterruptDelay unit="ns">0</MaxInterruptDelay>
<MaxInterruptTime unit="ns">57</MaxInterruptTime>
<MeanInterruptTime unit="ns">35</MeanInterruptTime>
<TotalInterruptTime unit="ns">76980203</TotalInterruptTime>
<InterruptCount>2141179</InterruptCount>
</PerCPUProfilingReport>
<SMPLockProfilingReport name="SMP lock stats">
<MaxAcquireTime unit="ns">608</MaxAcquireTime>
<MaxSectionTime unit="ns">1387</MaxSectionTime>
<MeanAcquireTime unit="ns">112</MeanAcquireTime>
<MeanSectionTime unit="ns">338</MeanSectionTime>
<TotalAcquireTime unit="ns">119031</TotalAcquireTime>
<TotalSectionTime unit="ns">357222</TotalSectionTime>
<UsageCount>1055</UsageCount>
<ContentionCount initialQueueLength="0">1055</ContentionCount>
<ContentionCount initialQueueLength="1">0</ContentionCount>
<ContentionCount initialQueueLength="2">0</ContentionCount>
<ContentionCount initialQueueLength="3">0</ContentionCount>
</SMPLockProfilingReport>
<SMPLockProfilingReport name="Giant">
<MaxAcquireTime unit="ns">4186</MaxAcquireTime>
<MaxSectionTime unit="ns">7575</MaxSectionTime>
<MeanAcquireTime unit="ns">160</MeanAcquireTime>
<MeanSectionTime unit="ns">183</MeanSectionTime>
<TotalAcquireTime unit="ns">1772793111</TotalAcquireTime>
<TotalSectionTime unit="ns">2029733879</TotalSectionTime>
<UsageCount>11039140</UsageCount>
<ContentionCount initialQueueLength="0">11037655</ContentionCount>
<ContentionCount initialQueueLength="1">1485</ContentionCount>
<ContentionCount initialQueueLength="2">0</ContentionCount>
<ContentionCount initialQueueLength="3">0</ContentionCount>
</SMPLockProfilingReport>
</ProfilingReport>
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_PROFREPORT
.. index:: CONFIGURE_SHELL_COMMAND_PROFREPORT
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_PROFREPORT`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_PROFREPORT`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
The configuration structure for the ``profreport`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_PROFREPORT_Command;
wkspace - display information on executive workspace
----------------------------------------------------
.. index:: wkspace
**SYNOPSYS:**
.. code:: c
wkspace
**DESCRIPTION:**
This command prints information on the current state of
the RTEMS Executive Workspace reported. This includes the
following information:
- Number of free blocks
- Largest free block
- Total bytes free
- Number of used blocks
- Largest used block
- Total bytes used
**EXIT STATUS:**
This command always succeeds and returns 0.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``wkspace``:
.. code:: c
SHLL \[/] $ wkspace
Number of free blocks: 1
Largest free block: 132336
Total bytes free: 132336
Number of used blocks: 36
Largest used block: 16408
Total bytes used: 55344
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_WKSPACE
.. index:: CONFIGURE_SHELL_COMMAND_WKSPACE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_WKSPACE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_WKSPACE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_wkspace
The ``wkspace`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_wkspace(
int argc,
char \**argv
);
The configuration structure for the ``wkspace`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_WKSPACE_Command;
config - show the system configuration.
---------------------------------------
.. index:: config
**SYNOPSYS:**
.. code:: c
config
**DESCRIPTION:**
This command display information about the RTEMS Configuration.
**EXIT STATUS:**
This command always succeeds and returns 0.
**NOTES:**
At this time, it does not report every configuration parameter.
This is an area in which user submissions or sponsorship of
a developer would be appreciated.
**EXAMPLES:**
The following is an example of how to use ``config``:
.. code:: c
INITIAL (startup) Configuration Info
WORKSPACE start: 0x23d22e0; size: 0x2dd20
TIME usec/tick: 10000; tick/timeslice: 50; tick/sec: 100
MAXIMUMS tasks: 20; timers: 0; sems: 50; que's: 20; ext's: 1
partitions: 0; regions: 0; ports: 0; periods: 0
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_CONFIG
.. index:: CONFIGURE_SHELL_COMMAND_CONFIG
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_CONFIG`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_CONFIG`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_config
The ``config`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_config(
int argc,
char \**argv
);
The configuration structure for the ``config`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_CONFIG_Command;
itask - list init tasks for the system
--------------------------------------
.. index:: itask
**SYNOPSYS:**
.. code:: c
itask
**DESCRIPTION:**
This command prints a report on the set of initialization
tasks and threads in the system.
**EXIT STATUS:**
This command always succeeds and returns 0.
**NOTES:**
At this time, it includes only Classic API Initialization Tasks.
This is an area in which user submissions or sponsorship of
a developer would be appreciated.
**EXAMPLES:**
The following is an example of how to use ``itask``:
.. code:: c
SHLL \[/] $ itask
# NAME ENTRY ARGUMENT PRIO MODES ATTRIBUTES STACK SIZE
------------------------------------------------------------------------------
0 UI1 \[0x2002258] 0 \[0x0] 1 nP DEFAULT 4096 \[0x1000]
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_ITASK
.. index:: CONFIGURE_SHELL_COMMAND_ITASK
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_ITASK`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_ITASK`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_itask
The ``itask`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_itask(
int argc,
char \**argv
);
The configuration structure for the ``itask`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_ITASK_Command;
extension - display information about extensions
------------------------------------------------
.. index:: extension
**SYNOPSYS:**
.. code:: c
extension \[id \[id ...] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of User Extensions currently active in the system.
If invoked with a set of ids as arguments, then just
those objects are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of using the ``extension`` command
on a system with no user extensions.
.. code:: c
SHLL \[/] $ extension
ID NAME
------------------------------------------------------------------------------
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_EXTENSION
.. index:: CONFIGURE_SHELL_COMMAND_EXTENSION
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_EXTENSION`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_EXTENSION`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_extension
The ``extension`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_extension(
int argc,
char \**argv
);
The configuration structure for the ``extension`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_EXTENSION_Command;
task - display information about tasks
--------------------------------------
.. index:: task
**SYNOPSYS:**
.. code:: c
task \[id \[id ...] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of Classic API Tasks currently active in the system.
If invoked with a set of ids as arguments, then just
those objects are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use the ``task`` on an
application with just two Classic API tasks:
.. code:: c
SHLL \[/] $ task
ID NAME PRIO STAT MODES EVENTS WAITID WAITARG NOTES
------------------------------------------------------------------------------
0a010001 UI1 1 SUSP P:T:nA NONE
0a010002 SHLL 100 READY P:T:nA NONE
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_TASK
.. index:: CONFIGURE_SHELL_COMMAND_TASK
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_TASK`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_TASK`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_task
The ``task`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_task(
int argc,
char \**argv
);
The configuration structure for the ``task`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_TASK_Command;
queue - display information about message queues
------------------------------------------------
.. index:: queue
**SYNOPSYS:**
.. code:: c
queue \[id \[id ... ] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of Classic API Message Queues currently active in the system.
If invoked with a set of ids as arguments, then just
those objects are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of using the ``queue`` command
on a system with no Classic API Message Queues.
.. code:: c
SHLL \[/] $ queue
ID NAME ATTRIBUTES PEND MAXPEND MAXSIZE
------------------------------------------------------------------------------
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_QUEUE
.. index:: CONFIGURE_SHELL_COMMAND_QUEUE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_QUEUE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_QUEUE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_queue
The ``queue`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_queue(
int argc,
char \**argv
);
The configuration structure for the ``queue`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_QUEUE_Command;
sema - display information about semaphores
-------------------------------------------
.. index:: sema
**SYNOPSYS:**
.. code:: c
sema \[id \[id ... ] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of Classic API Semaphores currently active in the system.
If invoked with a set of objects ids as arguments, then just
those objects are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``sema``:
.. code:: c
SHLL \[/] $ sema
ID NAME ATTR PRICEIL CURR_CNT HOLDID
------------------------------------------------------------------------------
1a010001 LBIO PR:BI:IN 0 1 00000000
1a010002 TRmi PR:BI:IN 0 1 00000000
1a010003 LBI00 PR:BI:IN 0 1 00000000
1a010004 TRia PR:BI:IN 0 1 00000000
1a010005 TRoa PR:BI:IN 0 1 00000000
1a010006 TRxa <assoc.c: BAD NAME> 0 0 09010001
1a010007 LBI01 PR:BI:IN 0 1 00000000
1a010008 LBI02 PR:BI:IN 0 1 00000000
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_SEMA
.. index:: CONFIGURE_SHELL_COMMAND_SEMA
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_SEMA`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_SEMA`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_sema
The ``sema`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_sema(
int argc,
char \**argv
);
The configuration structure for the ``sema`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_SEMA_Command;
region - display information about regions
------------------------------------------
.. index:: region
**SYNOPSYS:**
.. code:: c
region \[id \[id ... ] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of Classic API Regions currently active in the system.
If invoked with a set of object ids as arguments, then just
those object are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of using the ``region`` command
on a system with no user extensions.
.. code:: c
SHLL \[/] $ region
ID NAME ATTR STARTADDR LENGTH PAGE_SIZE USED_BLOCKS
------------------------------------------------------------------------------
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_REGION
.. index:: CONFIGURE_SHELL_COMMAND_REGION
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_REGION`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_REGION`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_region
The ``region`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_region(
int argc,
char \**argv
);
The configuration structure for the ``region`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_REGION_Command;
part - display information about partitions
-------------------------------------------
.. index:: part
**SYNOPSYS:**
.. code:: c
part \[id \[id ... ] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of Classic API Partitions currently active in the system.
If invoked with a set of object ids as arguments, then just
those objects are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of using the ``part`` command
on a system with no user extensions.
.. code:: c
SHLL \[/] $ part
ID NAME ATTR STARTADDR LENGTH BUF_SIZE USED_BLOCKS
------------------------------------------------------------------------------
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_PART
.. index:: CONFIGURE_SHELL_COMMAND_PART
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_PART`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_PART`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_part
The ``part`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_part(
int argc,
char \**argv
);
The configuration structure for the ``part`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_PART_Command;
object - display information about RTEMS objects
------------------------------------------------
.. index:: object
**SYNOPSYS:**
.. code:: c
object \[id \[id ...] ]
**DESCRIPTION:**
When invoked with a set of object ids as arguments, then
a report on those objects is printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``object``:
.. code:: c
SHLL \[/] $ object 0a010001 1a010002
ID NAME PRIO STAT MODES EVENTS WAITID WAITARG NOTES
------------------------------------------------------------------------------
0a010001 UI1 1 SUSP P:T:nA NONE
ID NAME ATTR PRICEIL CURR_CNT HOLDID
------------------------------------------------------------------------------
1a010002 TRmi PR:BI:IN 0 1 00000000
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_OBJECT
.. index:: CONFIGURE_SHELL_COMMAND_OBJECT
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_OBJECT`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_OBJECT`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_object
The ``object`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_object(
int argc,
char \**argv
);
The configuration structure for the ``object`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_OBJECT_Command;
driver - display the RTEMS device driver table
----------------------------------------------
.. index:: driver
**SYNOPSYS:**
.. code:: c
driver [ major [ major ... ] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of Device Drivers currently active in the system.
If invoked with a set of major numbers as arguments, then just
those Device Drivers are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``driver``:
.. code:: c
SHLL \[/] $ driver
Major Entry points
------------------------------------------------------------------------------
0 init: \[0x200256c]; control: \[0x20024c8]
open: \[0x2002518]; close: \[0x2002504]
read: \[0x20024f0]; write: \[0x20024dc]
1 init: \[0x20023fc]; control: \[0x2002448]
open: \[0x0]; close: \[0x0]
read: \[0x0]; write: \[0x0]
SHLL \[/] $
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DRIVER
.. index:: CONFIGURE_SHELL_COMMAND_DRIVER
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_DRIVER`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_DRIVER`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_driver
The ``driver`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_driver(
int argc,
char \**argv
);
The configuration structure for the ``driver`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DRIVER_Command;
dname - displays information about named drivers
------------------------------------------------
.. index:: dname
**SYNOPSYS:**
.. code:: c
dname
**DESCRIPTION:**
This command XXX
WARNING! XXX This command does not appear to work as of 27 February 2008.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``dname``:
.. code:: c
EXAMPLE_TBD
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_DNAME
.. index:: CONFIGURE_SHELL_COMMAND_DNAME
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_DNAME`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_DNAME`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_dname
The ``dname`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_dname(
int argc,
char \**argv
);
The configuration structure for the ``dname`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_DNAME_Command;
pthread - display information about POSIX threads
-------------------------------------------------
.. index:: pthread
**SYNOPSYS:**
.. code:: c
pthread \[id \[id ...] ]
**DESCRIPTION:**
When invoked with no arguments, this command prints information on
the set of POSIX API threads currently active in the system.
If invoked with a set of ids as arguments, then just
those objects are included in the information printed.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
This command is only available when the POSIX API is configured.
**EXAMPLES:**
The following is an example of how to use the ``task`` on an
application with four POSIX threads:
.. code:: c
SHLL \[/] $ pthread
ID NAME PRI STATE MODES EVENTS WAITID WAITARG NOTES
------------------------------------------------------------------------------
0b010002 Main 133 READY P:T:nA NONE 43010001 0x7b1148
0b010003 ISR 133 Wcvar P:T:nA NONE 43010003 0x7b1148
0b01000c 133 READY P:T:nA NONE 33010002 0x7b1148
0b01000d 133 Wmutex P:T:nA NONE 33010002 0x7b1148
**CONFIGURATION:**
This command is part of the monitor commands which are always
available in the shell.
**PROGRAMMING INFORMATION:**
This command is not directly available for invocation.
.. COMMENT: COPYRIGHT (c) 1988-2008.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.
Network Commands
################
Introduction
============
The RTEMS shell has the following network commands:
- ``netstats`` - obtain network statistics
- ``ifconfig`` - configure a network interface
- ``route`` - show or manipulate the IP routing table
- ``ping`` - ping a host or IP address
Commands
========
This section details the Network 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.
netstats - obtain network statistics
------------------------------------
.. index:: netstats
**SYNOPSYS:**
.. code:: c
netstats \[-Aimfpcut]
**DESCRIPTION:**
This command is used to display various types of network statistics. The
information displayed can be specified using command line arguments in
various combinations. The arguments are interpreted as follows:
*-A*
print All statistics
*-i*
print Inet Routes
*-m*
print MBUF Statistics
*-f*
print IF Statistics
*-p*
print IP Statistics
*-c*
print ICMP Statistics
*-u*
print UDP Statistics
*-t*
print TCP Statistics
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
NONE
**EXAMPLES:**
The following is an example of how to use ``netstats``:
The following is an example of using the ``netstats``
command to print the IP routing table:
.. code:: c
[/] $ netstats -i
Destination Gateway/Mask/Hw Flags Refs Use Expire Interface
default 192.168.1.14 UGS 0 0 0 eth1
192.168.1.0 255.255.255.0 U 0 0 1 eth1
192.168.1.14 00:A0:C8:1C:EE:28 UHL 1 0 1219 eth1
192.168.1.51 00:1D:7E:0C:D0:7C UHL 0 840 1202 eth1
192.168.1.151 00:1C:23:B2:0F:BB UHL 1 23 1219 eth1
The following is an example of using the ``netstats``
command to print the MBUF statistics:
.. code:: c
[/] $ netstats -m
\************ MBUF STATISTICS \************
mbufs:2048 clusters: 128 free: 63
drops: 0 waits: 0 drains: 0
free:1967 data:79 header:2 socket:0
pcb:0 rtable:0 htable:0 atable:0
soname:0 soopts:0 ftable:0 rights:0
ifaddr:0 control:0 oobdata:0
The following is an example of using the ``netstats``
command to print the print the interface statistics:
.. code:: c
[/] $ netstats -f
\************ INTERFACE STATISTICS \************
\***** eth1 \*****
Ethernet Address: 00:04:9F:00:5B:21
Address:192.168.1.244 Broadcast Address:192.168.1.255 Net mask:255.255.255.0
Flags: Up Broadcast Running Active Multicast
Send queue limit:50 length:1 Dropped:0
Rx Interrupts:889 Not First:0 Not Last:0
Giant:0 Non-octet:0
Bad CRC:0 Overrun:0 Collision:0
Tx Interrupts:867 Deferred:0 Late Collision:0
Retransmit Limit:0 Underrun:0 Misaligned:0
The following is an example of using the ``netstats``
command to print the print IP statistics:
.. code:: c
[/] $ netstats -p
\************ IP Statistics \************
total packets received 894
packets rcvd for unreachable dest 13
datagrams delivered to upper level 881
total ip packets generated here 871
The following is an example of using the ``netstats``
command to print the ICMP statistics:
.. code:: c
[/] $ netstats -c
\************ ICMP Statistics \************
Type 0 sent 843
number of responses 843
Type 8 received 843
The following is an example of using the ``netstats``
command to print the UDP statistics:
.. code:: c
[/] $ netstats -u
\************ UDP Statistics \************
The following is an example of using the ``netstats``
command to print the TCP statistics:
.. code:: c
[/] $ netstats -t
\************ TCP Statistics \************
connections accepted 1
connections established 1
segs where we tried to get rtt 34
times we succeeded 35
delayed acks sent 2
total packets sent 37
data packets sent 35
data bytes sent 2618
ack-only packets sent 2
total packets received 47
packets received in sequence 12
bytes received in sequence 307
rcvd ack packets 35
bytes acked by rcvd acks 2590
times hdr predict ok for acks 27
times hdr predict ok for data pkts 10
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_NETSTATS
.. index:: CONFIGURE_SHELL_COMMAND_NETSTATS
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_NETSTATS`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_NETSTATS`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_netstats
The ``netstats`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_netstats(
int argc,
char \**argv
);
The configuration structure for the ``netstats`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_NETSTATS_Command;
ifconfig - configure a network interface
----------------------------------------
.. index:: ifconfig
**SYNOPSYS:**
.. code:: c
ifconfig
ifconfig interface
ifconfig interface \[up|down]
ifconfig interface \[netmask|pointtopoint|broadcast] IP
**DESCRIPTION:**
This command may be used to display information about the
network interfaces in the system or configure them.
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
Just like its counterpart on GNU/Linux and BSD systems, this command
is complicated. More example usages would be a welcome submission.
**EXAMPLES:**
The following is an example of how to use ``ifconfig``:
.. code:: c
************ INTERFACE STATISTICS \************
\***** eth1 \*****
Ethernet Address: 00:04:9F:00:5B:21
Address:192.168.1.244 Broadcast Address:192.168.1.255 Net mask:255.255.255.0
Flags: Up Broadcast Running Active Multicast
Send queue limit:50 length:1 Dropped:0
Rx Interrupts:5391 Not First:0 Not Last:0
Giant:0 Non-octet:0
Bad CRC:0 Overrun:0 Collision:0
Tx Interrupts:5256 Deferred:0 Late Collision:0
Retransmit Limit:0 Underrun:0 Misaligned:0
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_IFCONFIG
.. index:: CONFIGURE_SHELL_COMMAND_IFCONFIG
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_IFCONFIG`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_IFCONFIG`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_ifconfig
The ``ifconfig`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_ifconfig(
int argc,
char \**argv
);
The configuration structure for the ``ifconfig`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_IFCONFIG_Command;
route - show or manipulate the ip routing table
-----------------------------------------------
.. index:: route
**SYNOPSYS:**
.. code:: c
route \[subcommand] \[args]
**DESCRIPTION:**
This command is used to display and manipulate the routing table.
When invoked with no arguments, the current routing information is
displayed. When invoked with the subcommands ``add`` or ``del``,
then additional arguments must be provided to describe the route.
Command templates include the following:
.. code:: c
route \[add|del] -net IP_ADDRESS gw GATEWAY_ADDRESS \[netmask MASK]
route \[add|del] -host IP_ADDRESS gw GATEWAY_ADDRES \[netmask MASK]
When not provided the netmask defaults to ``255.255.255.0``
**EXIT STATUS:**
This command returns 0 on success and non-zero if an error is encountered.
**NOTES:**
Just like its counterpart on GNU/Linux and BSD systems, this command
is complicated. More example usages would be a welcome submission.
**EXAMPLES:**
The following is an example of how to use ``route`` to display,
add, and delete a new route:
.. code:: c
[/] $ route
Destination Gateway/Mask/Hw Flags Refs Use Expire Interface
default 192.168.1.14 UGS 0 0 0 eth1
192.168.1.0 255.255.255.0 U 0 0 1 eth1
192.168.1.14 00:A0:C8:1C:EE:28 UHL 1 0 1444 eth1
192.168.1.51 00:1D:7E:0C:D0:7C UHL 0 10844 1202 eth1
192.168.1.151 00:1C:23:B2:0F:BB UHL 2 37 1399 eth1
\[/] $ route add -net 192.168.3.0 gw 192.168.1.14
\[/] $ route
Destination Gateway/Mask/Hw Flags Refs Use Expire Interface
default 192.168.1.14 UGS 0 0 0 eth1
192.168.1.0 255.255.255.0 U 0 0 1 eth1
192.168.1.14 00:A0:C8:1C:EE:28 UHL 2 0 1498 eth1
192.168.1.51 00:1D:7E:0C:D0:7C UHL 0 14937 1202 eth1
192.168.1.151 00:1C:23:B2:0F:BB UHL 2 96 1399 eth1
192.168.3.0 192.168.1.14 UGS 0 0 0 eth1
\[/] $ route del -net 192.168.3.0 gw 192.168.1.14
\[/] $ route
Destination Gateway/Mask/Hw Flags Refs Use Expire Interface
default 192.168.1.14 UGS 0 0 0 eth1
192.168.1.0 255.255.255.0 U 0 0 1 eth1
192.168.1.14 00:A0:C8:1C:EE:28 UHL 1 0 1498 eth1
192.168.1.51 00:1D:7E:0C:D0:7C UHL 0 15945 1202 eth1
192.168.1.151 00:1C:23:B2:0F:BB UHL 2 117 1399 eth1
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_ROUTE
.. index:: CONFIGURE_SHELL_COMMAND_ROUTE
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_ROUTE`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_ROUTE`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_route
The ``route`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_route(
int argc,
char \**argv
);
The configuration structure for the ``route`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_ROUTE_Command;
ping - ping a host or IP address
--------------------------------
.. index:: ping
**SYNOPSYS:**
.. code:: c
ping \[-AaDdfnoQqRrv] \[-c count] \[-G sweepmaxsize] \[-g sweepminsize]
\[-h sweepincrsize] \[-i wait] \[-l preload] \[-M mask | time] \[-m ttl]
\[-p pattern] \[-S src_addr] \[-s packetsize] \[-t timeout]
\[-W waittime] \[-z tos] host
ping \[-AaDdfLnoQqRrv] \[-c count] \[-I iface] \[-i wait] \[-l preload]
\[-M mask | time] \[-m ttl] \[-p pattern] \[-S src_addr]
\[-s packetsize] \[-T ttl] \[-t timeout] \[-W waittime]
\[-z tos] mcast-group
**DESCRIPTION:**
The ping utility uses the ICMP protocols mandatory ECHO_REQUEST
datagram to elicit an ICMP ECHO_RESPONSE from a host or gateway.
ECHO_REQUEST datagrams (“pings”) have an IP and ICMP header,
followed by a “struct timeval” and then an arbitrary number of
“pad” bytes used to fill out the packet. The options are as
follows:
*-A*
Audible. Output a bell (ASCII 0x07) character when no packet is
received before the next packet is transmitted. To cater for
round-trip times that are longer than the interval between
transmissions, further missing packets cause a bell only if the
maximum number of unreceived packets has increased.
*-a*
Audible. Include a bell (ASCII 0x07) character in the output when any
packet is received. This option is ignored if other format options
are present.
*-c count*
Stop after sending (and receiving) count ECHO_RESPONSE packets. If
this option is not specified, ping will operate until interrupted. If
this option is specified in conjunction with ping sweeps, each sweep
will consist of count packets.
*-D*
Set the Dont Fragment bit.
*-d*
Set the SO_DEBUG option on the socket being used.
*-f*
Flood ping. Outputs packets as fast as they come back or one
hundred times per second, whichever is more. For every ECHO_REQUEST
sent a period “.” is printed, while for every ECHO_REPLY received a
backspace is printed. This provides a rapid display of how many
packets are being dropped. Only the super-user may use this option.
This can be very hard on a network and should be used with caution.
*-G sweepmaxsize*
Specify the maximum size of ICMP payload when sending sweeping pings.
This option is required for ping sweeps.
*-g sweepminsize*
Specify the size of ICMP payload to start with when sending sweeping
pings. The default value is 0.
*-h sweepincrsize*
Specify the number of bytes to increment the size of ICMP payload
after each sweep when sending sweeping pings. The default value is 1.
*-I iface*
Source multicast packets with the given interface address. This flag
only applies if the ping destination is a multicast address.
*-i wait*
Wait wait seconds between sending each packet. The default is to wait
for one second between each packet. The wait time may be fractional,
but only the super-user may specify values less than 1 second. This
option is incompatible with the -f option.
*-L*
Suppress loopback of multicast packets. This flag only applies if the
ping destination is a multicast address.
*-l preload*
If preload is specified, ping sends that many packets as fast as
possible before falling into its normal mode of behavior. Only the
super-user may use this option.
*-M mask | time*
Use ICMP_MASKREQ or ICMP_TSTAMP instead of ICMP_ECHO. For mask, print
the netmask of the remote machine. Set the net.inet.icmp.maskrepl MIB
variable to enable ICMP_MASKREPLY. For time, print the origination,
reception and transmission timestamps.
*-m ttl*
Set the IP Time To Live for outgoing packets. If not specified, the
kernel uses the value of the net.inet.ip.ttl MIB variable.
*-n*
Numeric output only. No attempt will be made to lookup symbolic names
for host addresses.
*-o*
Exit successfully after receiving one reply packet.
*-p pattern*
You may specify up to 16 “pad” bytes to fill out the packet you
send. This is useful for diagnosing data-dependent problems in a
network. For example, “-p ff” will cause the sent packet to be
filled with all ones.
*-Q*
Somewhat quiet output. Dont display ICMP error messages that are in
response to our query messages. Originally, the -v flag was required
to display such errors, but -v displays all ICMP error messages. On a
busy machine, this output can be overbear- ing. Without the -Q flag,
ping prints out any ICMP error mes- sages caused by its own
ECHO_REQUEST messages.
*-q*
Quiet output. Nothing is displayed except the summary lines at
startup time and when finished.
*-R*
Record route. Includes the RECORD_ROUTE option in the ECHO_REQUEST
packet and displays the route buffer on returned packets. Note that
the IP header is only large enough for nine such routes; the
traceroute(8) command is usually better at determining the route
packets take to a particular destination. If more routes come back
than should, such as due to an illegal spoofed packet, ping will print
the route list and then truncate it at the correct spot. Many hosts
ignore or discard the RECORD_ROUTE option.
*-r*
Bypass the normal routing tables and send directly to a host on an
attached network. If the host is not on a directly-attached network,
an error is returned. This option can be used to ping a local host
through an interface that has no route through it (e.g., after the
interface was dropped).
*-S src_addr*
Use the following IP address as the source address in outgoing
packets. On hosts with more than one IP address, this option can be
used to force the source address to be something other than the IP
address of the interface the probe packet is sent on. If the IP
address is not one of this machines interface addresses, an error is
returned and nothing is sent.
*-s packetsize*
Specify the number of data bytes to be sent. The default is 56, which
translates into 64 ICMP data bytes when combined with the 8 bytes of
ICMP header data. Only the super-user may specify val- ues more than
default. This option cannot be used with ping sweeps.
*-T ttl*
Set the IP Time To Live for multicasted packets. This flag only
applies if the ping destination is a multicast address.
*-t timeout*
Specify a timeout, in seconds, before ping exits regardless of how
many packets have been received.
*-v*
Verbose output. ICMP packets other than ECHO_RESPONSE that are
received are listed.
*-W waittime*
Time in milliseconds to wait for a reply for each packet sent. If a
reply arrives later, the packet is not printed as replied, but
considered as replied when calculating statistics.
*-z tos*
Use the specified type of service.
**EXIT STATUS:**
The ping utility exits with one of the following values:
0 At least one response was heard from the specified host.
2 The transmission was successful but no responses were
received.
any other value an error occurred. These values are defined in
<sysexits.h>.
**NOTES:**
When using ping for fault isolation, it should first be run on the
local host, to verify that the local network interface is up and
running. Then, hosts and gateways further and further away should be
“pinged”. Round-trip times and packet loss statistics are computed.
If duplicate packets are received, they are not included in the packet
loss calculation, although the round trip time of these packets is
used in calculating the round-trip time statistics. When the
specified number of packets have been sent a brief summary is
displayed, showing the number of packets sent and received, and the
minimum, mean, maximum, and standard deviation of the round-trip
times.
This program is intended for use in network testing, measurement and
management. Because of the load it can impose on the network, it is
unwise to use ping during normal operations or from automated scripts.
**EXAMPLES:**
The following is an example of how to use ``oing`` to ping:
.. code:: c
[/] # ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1): 56 data bytes
64 bytes from 10.10.10.1: icmp_seq=0 ttl=63 time=0.356 ms
64 bytes from 10.10.10.1: icmp_seq=1 ttl=63 time=0.229 ms
64 bytes from 10.10.10.1: icmp_seq=2 ttl=63 time=0.233 ms
64 bytes from 10.10.10.1: icmp_seq=3 ttl=63 time=0.235 ms
64 bytes from 10.10.10.1: icmp_seq=4 ttl=63 time=0.229 ms
--- 10.10.10.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.229/0.256/0.356/0.050 ms
\[/] # ping -f -c 10000 10.10.10.1
PING 10.10.10.1 (10.10.10.1): 56 data bytes
.
--- 10.10.10.1 ping statistics ---
10000 packets transmitted, 10000 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.154/0.225/0.533/0.027 ms
**CONFIGURATION:**
.. index:: CONFIGURE_SHELL_NO_COMMAND_PING
.. index:: CONFIGURE_SHELL_COMMAND_PING
This command is included in the default shell command set.
When building a custom command set, define``CONFIGURE_SHELL_COMMAND_PING`` to have this
command included.
This command can be excluded from the shell command set by
defining ``CONFIGURE_SHELL_NO_COMMAND_PING`` when all
shell commands have been configured.
**PROGRAMMING INFORMATION:**
.. index:: rtems_shell_rtems_main_ping
The ``ping`` is implemented by a C language function
which has the following prototype:
.. code:: c
int rtems_shell_rtems_main_ping(
int argc,
char \**argv
);
The configuration structure for the ``ping`` has the
following prototype:
.. code:: c
extern rtems_shell_cmd_t rtems_shell_PING_Command;
Function and Variable Index
###########################
.. COMMENT: There are currently no Command and Variable Index entries.
Concept Index
#############
Command Index
#############