diff options
Diffstat (limited to 'kern/shell.h')
-rw-r--r-- | kern/shell.h | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/kern/shell.h b/kern/shell.h index 5ff4920d..cf56cebf 100644 --- a/kern/shell.h +++ b/kern/shell.h @@ -21,6 +21,23 @@ #ifndef _KERN_SHELL_H #define _KERN_SHELL_H +#include <kern/init.h> +#include <kern/error.h> +#include <kern/macros.h> + +#ifdef X15_SHELL + +#define SHELL_REGISTER_CMDS(cmds) \ +MACRO_BEGIN \ + size_t ___i; \ + int ___error; \ + \ + for (___i = 0; ___i < ARRAY_SIZE(cmds); ___i++) { \ + ___error = shell_cmd_register(&(cmds)[___i]); \ + error_check(___error, __func__); \ + } \ +MACRO_END + typedef void (*shell_fn_t)(int argc, char *argv[]); struct shell_cmd { @@ -49,11 +66,9 @@ void shell_cmd_init(struct shell_cmd *cmd, const char *name, const char *short_desc, const char *long_desc); /* - * Initialize the shell module. - * - * On return, shell commands can be registered. + * Start the shell thread. */ -void shell_setup(void); +void shell_start(void); /* * Register a shell command. @@ -66,4 +81,17 @@ void shell_setup(void); */ int shell_cmd_register(struct shell_cmd *cmd); +#else /* X15_SHELL */ +#define SHELL_REGISTER_CMDS(cmds) +#define shell_setup() +#define shell_start() +#endif /* X15_SHELL */ + +/* + * This init operation provides : + * - commands can be registered + * - module fully initialized + */ +INIT_OP_DECLARE(shell_setup); + #endif /* _KERN_SHELL_H */ |