RTEMS 6.1-rc4
|
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. |