Difference between revisions of "Shell"

From Embedded Xinu
Jump to navigation Jump to search
(Update to shell documentation)
Line 1: Line 1:
The XINU shell is designed as an interface for interacting with the operating system.  The majority of the commands provide information about the current state of the system including its processes, memory, and hardware.
+
The XINU shell is a [[Modules | subsystem]] designed as an interface for interacting with the operating system
 +
 
 +
== How it works ==
 +
The shell relies on the [[TTY_Driver | TTY driver]] to receive user input and provide output to the user.  When XINU starts, a shell is process is spawned on each [[UART_Driver | serial port]] (or TTY).  When a user enters a command the <code>lexan</code> function divides the string of input into tokens.  Command name, arguments, quoted strings, backgrounding, and redirection tokens are all recognized and divided by <code>lexan</code>.
 +
 
 +
After the command is processed, the shell uses the tokens to properly execute the given command.  The shell first checks for the backgrounding ampersand ('&'), which should only appear as the last token.  The shell is next designed to handle redirection, but does not currently do so since XINU's file system is in development.  Next, the command is looked up in the command table defined at the top of <code>shell.c</code>.  Each entry in the command table follows the format of command name, is the function built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>.  Built-in commands are executed by calling the function that implements the command.  All other commands are executed by creating a new process.  If the user did not include the backgrounding flag in the input, the shell waits until the command process has completed before asking for more input.
 +
 
 +
== Running commands ==
 +
The current distribution of the XINU shell is equipped with some basic commands.  The majority of the commands provide information about the current state of the system including its processes, memory, and hardware.  A full list of commands can be obtained from the shell by using the <code>help</code> command.  Help on a specific command can be obtained using <code>COMMAND --help</code> or <code>help COMMAND</code>.
  
== Commands ==
 
The XINU shell is equipped with some basic commands:
 
 
* '''exit''': quits the XINU shell
 
* '''exit''': quits the XINU shell
 
* '''gpiostat''': displays the current status of the [[GPIO]] pins
 
* '''gpiostat''': displays the current status of the [[GPIO]] pins

Revision as of 14:16, 20 September 2007

The XINU shell is a subsystem designed as an interface for interacting with the operating system.

How it works

The shell relies on the TTY driver to receive user input and provide output to the user. When XINU starts, a shell is process is spawned on each serial port (or TTY). When a user enters a command the lexan function divides the string of input into tokens. Command name, arguments, quoted strings, backgrounding, and redirection tokens are all recognized and divided by lexan.

After the command is processed, the shell uses the tokens to properly execute the given command. The shell first checks for the backgrounding ampersand ('&'), which should only appear as the last token. The shell is next designed to handle redirection, but does not currently do so since XINU's file system is in development. Next, the command is looked up in the command table defined at the top of shell.c. Each entry in the command table follows the format of command name, is the function built-in (ie can the command run in the background), and the function that executes the command: {"command_name", TRUE / FALSE, xsh_function},. Built-in commands are executed by calling the function that implements the command. All other commands are executed by creating a new process. If the user did not include the backgrounding flag in the input, the shell waits until the command process has completed before asking for more input.

Running commands

The current distribution of the XINU shell is equipped with some basic commands. The majority of the commands provide information about the current state of the system including its processes, memory, and hardware. A full list of commands can be obtained from the shell by using the help command. Help on a specific command can be obtained using COMMAND --help or help COMMAND.

  • exit: quits the XINU shell
  • gpiostat: displays the current status of the GPIO pins
  • help: displays a list of commands in the XINU shell
  • kill PID: kills a process number PID
  • memstat: displays the current memory usage and prints the free list
  • memdump: dumps a region of memory
  • led DESCRIPTOR STATUS: turns an led on or off
  • ps: displays a table of running processes
  • reset: soft powercycles the backend
  • sleep DELAY: sleep for DELAY seconds
  • uartstat UARTNUM: displays statistics for uart UARTNUM
  • test: can be used for building test programs, all builds should simply return OK
  • testsuite: run a series of tests to see if the system is functioning properly