RTEMS 6.1-rc1
|
Instantatiate a new terminal shell. More...
#include <stdio.h>
#include <time.h>
#include <rtems.h>
#include <rtems/error.h>
#include <rtems/libio.h>
#include <rtems/libio_.h>
#include <rtems/shell.h>
#include <rtems/shellconfig.h>
#include <rtems/console.h>
#include "internal.h"
#include <termios.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <pwd.h>
#include <pthread.h>
#include <assert.h>
Data Structures | |
struct | rtems_shell_env_key_handle |
Macros | |
#define | SHELL_STD_DEBUG 0 |
#define | shell_std_debug(...) |
#define | SHELL_MAGIC rtems_build_name('S', 'E', 'N', 'V') |
#define | RTEMS_SHELL_MAXIMUM_ARGUMENTS (128) |
#define | RTEMS_SHELL_CMD_SIZE (128) |
#define | RTEMS_SHELL_CMD_COUNT (32) |
#define | RTEMS_SHELL_PROMPT_SIZE (128) |
Typedefs | |
typedef struct rtems_shell_env_key_handle | rtems_shell_env_key_handle |
Functions | |
void | rtems_shell_init_environment (void) |
rtems_shell_env_t * | rtems_shell_get_current_env (void) |
void | rtems_shell_dup_current_env (rtems_shell_env_t *copy) |
bool | rtems_shell_run_main_loop (rtems_shell_env_t *shell_env, bool interactive, FILE *line_editor_output) |
Runs the shell main loop. More... | |
bool | rtems_shell_main_loop (rtems_shell_env_t *shell_env) |
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) |
Variables | |
const rtems_shell_env_t | rtems_global_shell_env |
Instantatiate a new terminal shell.
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. |
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. |
const rtems_shell_env_t rtems_global_shell_env |