summaryrefslogtreecommitdiff
path: root/kern/shell.h
diff options
context:
space:
mode:
Diffstat (limited to 'kern/shell.h')
-rw-r--r--kern/shell.h36
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 */