![]() |
RTEMS 6.1
|
Instantatiate a New Terminal Shell. More...
#include <sys/types.h>#include <sys/stat.h>#include <rtems.h>#include <stdio.h>#include <termios.h>#include <rtems/fs.h>#include <rtems/libio.h>#include <rtems/chain.h>Go to the source code of this file.
Data Structures | |
| struct | rtems_shell_cmd_tt |
| struct | rtems_shell_alias_t |
| struct | rtems_shell_topic_tt |
| struct | rtems_shell_env_t |
| struct | rtems_shell_filesystems_tt |
Typedefs | |
| typedef bool(* | rtems_shell_login_check_t) (const char *, const char *) |
| typedef int(* | rtems_shell_command_t) (int argc, char **argv) |
| typedef struct rtems_shell_cmd_tt | rtems_shell_cmd_t |
| typedef struct rtems_shell_topic_tt | rtems_shell_topic_t |
| typedef struct rtems_shell_filesystems_tt | rtems_shell_filesystems_t |
| typedef int(* | rtems_shell_filesystems_mounter_t) (const char *driver, const char *path, rtems_shell_filesystems_t *fs, rtems_filesystem_options_t options) |
| typedef void(* | rtems_shell_wait_for_input_notification) (int fd, int seconds_remaining, void *arg) |
Functions | |
| bool | rtems_shell_login_prompt (FILE *in, FILE *out, const char *device, rtems_shell_login_check_t check) |
| bool | rtems_shell_login_check (const char *user, const char *passphrase) |
| unsigned int | rtems_shell_getchar (FILE *in) |
| rtems_shell_cmd_t * | rtems_shell_lookup_cmd (const char *cmd) |
| rtems_shell_cmd_t * | rtems_shell_add_cmd_struct (rtems_shell_cmd_t *shell_cmd) |
| rtems_shell_cmd_t * | rtems_shell_add_cmd (const char *cmd, const char *topic, const char *usage, rtems_shell_command_t command) |
| rtems_shell_cmd_t * | rtems_shell_alias_cmd (const char *cmd, const char *alias) |
| int | rtems_shell_make_args (char *commandLine, int *argc_p, char **argv_p, int max_args) |
| rtems_shell_topic_t * | rtems_shell_lookup_topic (const char *topic) |
| bool | rtems_shell_can_see_cmd (const rtems_shell_cmd_t *shell_cmd) |
| int | rtems_shell_execute_cmd (const char *cmd, int argc, char *argv[]) |
| void | rtems_shell_init_environment (void) |
| int | rtems_shell_cat_file (FILE *out, const char *name) |
| void | rtems_shell_write_file (const char *name, const char *content) |
| int | rtems_shell_script_file (int argc, char **argv) |
| 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_shell_login_check_t login_check) |
| rtems_status_code | rtems_shell_script (const char *task_name, size_t task_stacksize, rtems_task_priority task_priority, const char *input, const char *output, bool output_append, bool wait, bool echo) |
| bool | rtems_shell_main_loop (rtems_shell_env_t *rtems_shell_env) |
| bool | rtems_shell_run_main_loop (rtems_shell_env_t *shell_env, bool interactive, FILE *line_editor_output) |
| Runs the shell main loop. | |
| rtems_shell_env_t * | rtems_shell_get_current_env (void) |
| void | rtems_shell_dup_current_env (rtems_shell_env_t *) |
| void | rtems_shell_get_prompt (rtems_shell_env_t *shell_env, char *prompt, size_t size) |
| int | rtems_shell_libc_mounter (const char *driver, const char *path, rtems_shell_filesystems_t *fs, rtems_filesystem_options_t options) |
| void | rtems_shell_mount_add_fsys (rtems_shell_filesystems_t *fs) |
| void | rtems_shell_mount_del_fsys (rtems_shell_filesystems_t *fs) |
| rtems_status_code | rtems_shell_wait_for_input (int fd, int timeout_in_seconds, rtems_shell_wait_for_input_notification notification, void *notification_arg) |
| Waits for input. | |
| rtems_status_code | rtems_shell_wait_for_explicit_input (int fd, int timeout_in_seconds, rtems_shell_wait_for_input_notification notification, void *notification_arg, int desired_input) |
| Waits for explicit input. | |
| int | rtems_shell_main_monitor (int argc, char **argv) |
| int | rtems_shell_main_mv (int argc, char *argv[]) |
| int | rtems_shell_main_cp (int argc, char *argv[]) |
| int | rtems_shell_main_rm (int argc, char *argv[]) |
Variables | |
| const rtems_shell_env_t | rtems_global_shell_env |
Instantatiate a New Terminal Shell.
| void rtems_shell_get_prompt | ( | rtems_shell_env_t * | shell_env, |
| char * | prompt, | ||
| size_t | size | ||
| ) |
This method dynamically builds the command line prompt string and places it in prompt.
| [in] | shell_env | is the shell execution environment |
| [in] | prompt | is a pointer to a string buffer area |
| [in] | size | is length of the prompt buffer area |
| 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_shell_login_check_t | login_check | ||
| ) |
Initialise the shell creating tasks to login and run the shell sessions.
| task_name | Name of the shell task. |
| task_stacksize | The size of the stack. If 0 the default size is used. |
| task_priority | The priority the shell runs at. |
| forever | Repeat logins. |
| wait | Caller should block until shell exits. |
| login_check | User login check function, NULL disables login checks. |
| int rtems_shell_libc_mounter | ( | const char * | driver, |
| const char * | path, | ||
| rtems_shell_filesystems_t * | fs, | ||
| rtems_filesystem_options_t | options | ||
| ) |
Helper for the mount command.
| [in] | driver | The path to the driver. |
| [in] | path | The path to mount on. |
| [in] | fs | The file system definition. |
| [in] | options | Special file system options. |
| void rtems_shell_mount_add_fsys | ( | rtems_shell_filesystems_t * | fs | ) |
Add a new file system mount configuration to the mount command.
| [in] | fs | The file system mount data. |
| void rtems_shell_mount_del_fsys | ( | rtems_shell_filesystems_t * | fs | ) |
Delete file system mount configuration from the mount command.
| [in] | fs | The file system mount data to remove. |
| bool rtems_shell_run_main_loop | ( | rtems_shell_env_t * | shell_env, |
| bool | interactive, | ||
| FILE * | line_editor_output | ||
| ) |
Runs the shell main loop.
The caller shall initialize the shell environment. It is recommended that the caller duplicates the current shell environment using rtems_shell_dup_current_env() and then performs the required customization. Shell commands will use the stdin, stdout, and stderr file streams set up by the caller.
| interactive | indicates if the shell main loop interfaces with an interactive user. For an interactive user, a welcome message using "/etc/motd" is presented and command prompt is displayed. | |
| [in,out] | line_editor_output | is the optional line editor output file stream. It may be NULL, to disable the line editor output. |
| rtems_status_code rtems_shell_script | ( | const char * | task_name, |
| size_t | task_stacksize, | ||
| rtems_task_priority | task_priority, | ||
| const char * | input, | ||
| const char * | output, | ||
| bool | output_append, | ||
| bool | wait, | ||
| bool | echo | ||
| ) |
Run a shell script creating a shell tasks to execute the command under.
| task_name | Name of the shell task. |
| task_stacksize | The size of the stack. If 0 the default size is used. |
| task_priority | The priority the shell runs at. |
| input | The file of commands. Can be 'stdin' to use stdin. |
| output | The output file to write commands to. Can be 'stdout', 'stderr' or '/dev/null'. |
| output_append | Append the output to the file or truncate the file. Create if it does not exist. |
| wait | Wait for the script to finish. |
| rtems_status_code rtems_shell_wait_for_explicit_input | ( | int | fd, |
| int | timeout_in_seconds, | ||
| rtems_shell_wait_for_input_notification | notification, | ||
| void * | notification_arg, | ||
| int | desired_input | ||
| ) |
Waits for explicit input.
| desired_input | An explicit unsigned character to wait for or -1 to accept any input. |
| RTEMS_SUCCESSFUL | Input detected. |
| RTEMS_TIMEOUT | Timeout expired. |
| RTEMS_UNSATISFIED | Cannot change or restore termios attributes. |
| rtems_status_code rtems_shell_wait_for_input | ( | int | fd, |
| int | timeout_in_seconds, | ||
| rtems_shell_wait_for_input_notification | notification, | ||
| void * | notification_arg | ||
| ) |
Waits for input.
| RTEMS_SUCCESSFUL | Input detected. |
| RTEMS_TIMEOUT | Timeout expired. |
| RTEMS_UNSATISFIED | Cannot change or restore termios attributes. |