summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2008-08-13 15:54:53 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2008-08-13 16:29:17 +0200
commit932b57873db47db89989b86789b216e50a753478 (patch)
tree45121689cbab9b60340f62e6148405fdbea53163 /commands
parent0dd24dc17d561fa0a9f8d5b2ffb5c31e1cf7985c (diff)
downloadbarebox-932b57873db47db89989b86789b216e50a753478.tar.gz
barebox-932b57873db47db89989b86789b216e50a753478.tar.xz
move several commands into extra files
move false, true, help, insmod, lsmod, version into extra files Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands')
-rw-r--r--commands/Kconfig40
-rw-r--r--commands/Makefile6
-rw-r--r--commands/false.c37
-rw-r--r--commands/help.c71
-rw-r--r--commands/insmod.c45
-rw-r--r--commands/lsmod.c19
-rw-r--r--commands/true.c37
-rw-r--r--commands/version.c39
8 files changed, 290 insertions, 4 deletions
diff --git a/commands/Kconfig b/commands/Kconfig
index 19b96f206b..0e405eea57 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -2,6 +2,7 @@ config REGINFO
bool
menu "Commands "
+ depends on COMMAND
menu "scripting "
@@ -36,14 +37,19 @@ config CMD_PRINTENV
tristate
prompt "printenv"
-config CMD_HELP
+config CMD_READLINE
+ tristate
+ prompt "readline"
+
+config CMD_TRUE
tristate
default y
- prompt "help"
+ prompt "true"
-config CMD_READLINE
+config CMD_FALSE
tristate
- prompt "readline"
+ default y
+ prompt "false"
endmenu
@@ -238,4 +244,30 @@ config CMD_REGINFO
tristate
prompt "reginfo"
+config CMD_VERSION
+ tristate
+ default y
+ prompt "version"
+
+config CMD_HELP
+ tristate
+ default y
+ prompt "help"
+
+config CMD_DEVINFO
+ tristate
+ default y
+ prompt "devinfo"
+
+config CMD_INSMOD
+ bool
+ depends on MODULES
+ default y
+ prompt "insmod"
+
+config CMD_LSMOD
+ bool
+ depends on MODULES
+ prompt "lsmod"
+
endmenu
diff --git a/commands/Makefile b/commands/Makefile
index 1b3565f915..a828061abf 100644
--- a/commands/Makefile
+++ b/commands/Makefile
@@ -39,3 +39,9 @@ obj-$(CONFIG_CMD_PRINTENV) += printenv.o
obj-$(CONFIG_CMD_SAVEENV) += saveenv.o
obj-$(CONFIG_CMD_LOADENV) += loadenv.o
obj-$(CONFIG_CMD_NAND) += nand.o
+obj-$(CONFIG_CMD_TRUE) += true.o
+obj-$(CONFIG_CMD_FALSE) += false.o
+obj-$(CONFIG_CMD_VERSION) += version.o
+obj-$(CONFIG_CMD_HELP) += help.o
+obj-$(CONFIG_CMD_LSMOD) += lsmod.o
+obj-$(CONFIG_CMD_INSMOD) += insmod.o
diff --git a/commands/false.c b/commands/false.c
new file mode 100644
index 0000000000..67651c4bd8
--- /dev/null
+++ b/commands/false.c
@@ -0,0 +1,37 @@
+/*
+ * (C) Copyright 2000-2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+static int do_false (cmd_tbl_t *cmdtp, int argc, char *argv[])
+{
+ return 1;
+}
+
+U_BOOT_CMD_START(false)
+ .maxargs = 1,
+ .cmd = do_false,
+ .usage = "do nothing, unsuccessfully",
+U_BOOT_CMD_END
+
diff --git a/commands/help.c b/commands/help.c
new file mode 100644
index 0000000000..ddb2aa8409
--- /dev/null
+++ b/commands/help.c
@@ -0,0 +1,71 @@
+/*
+ * (C) Copyright 2000-2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+/*
+ * Use puts() instead of printf() to avoid printf buffer overflow
+ * for long help messages
+ */
+static int do_help (cmd_tbl_t * cmdtp, int argc, char *argv[])
+{
+ if (argc == 1) { /* show list of commands */
+ for_each_command(cmdtp) {
+ if (!cmdtp->usage)
+ continue;
+ printf("%10s - %s\n", cmdtp->name, cmdtp->usage);
+ }
+ return 0;
+ }
+
+ /* command help (long version) */
+ if ((cmdtp = find_cmd(argv[1])) != NULL) {
+ u_boot_cmd_usage(cmdtp);
+ return 0;
+ } else {
+ printf ("Unknown command '%s' - try 'help'"
+ " without arguments for list of all"
+ " known commands\n\n", argv[1]
+ );
+ return 1;
+ }
+}
+
+static const __maybe_unused char cmd_help_help[] =
+"Show help information (for 'command')\n"
+"'help' prints online help for the monitor commands.\n\n"
+"Without arguments, it prints a short usage message for all commands.\n\n"
+"To get detailed help information for specific commands you can type\n"
+"'help' with one or more command names as arguments.\n";
+
+static const char *help_aliases[] = { "?", NULL};
+
+U_BOOT_CMD_START(help)
+ .maxargs = 2,
+ .cmd = do_help,
+ .aliases = help_aliases,
+ .usage = "print online help",
+ U_BOOT_CMD_HELP(cmd_help_help)
+U_BOOT_CMD_END
+
diff --git a/commands/insmod.c b/commands/insmod.c
new file mode 100644
index 0000000000..28a59ead56
--- /dev/null
+++ b/commands/insmod.c
@@ -0,0 +1,45 @@
+#include <common.h>
+#include <command.h>
+#include <module.h>
+#include <errno.h>
+#include <fs.h>
+#include <malloc.h>
+
+static int do_insmod (cmd_tbl_t *cmdtp, int argc, char *argv[])
+{
+ struct module *module;
+ void *buf;
+ int len;
+
+ if (argc < 2) {
+ u_boot_cmd_usage(cmdtp);
+ return 1;
+ }
+
+ buf = read_file(argv[1], &len);
+ if (!buf) {
+ perror("insmod");
+ return 1;
+ }
+
+ module = load_module(buf, len);
+
+ free(buf);
+
+ if (module) {
+ if (module->init)
+ module->init();
+ }
+
+ return 0;
+}
+
+static const __maybe_unused char cmd_insmod_help[] =
+"Usage: insmod <module>\n";
+
+U_BOOT_CMD_START(insmod)
+ .maxargs = 2,
+ .cmd = do_insmod,
+ .usage = "insert a module",
+ U_BOOT_CMD_HELP(cmd_insmod_help)
+U_BOOT_CMD_END
diff --git a/commands/lsmod.c b/commands/lsmod.c
new file mode 100644
index 0000000000..9909724cb2
--- /dev/null
+++ b/commands/lsmod.c
@@ -0,0 +1,19 @@
+#include <common.h>
+#include <command.h>
+#include <module.h>
+
+static int do_lsmod (cmd_tbl_t *cmdtp, int argc, char *argv[])
+{
+ struct module *mod;
+
+ for_each_module(mod)
+ printf("%s\n", mod->name);
+
+ return 0;
+}
+
+U_BOOT_CMD_START(lsmod)
+ .maxargs = 1,
+ .cmd = do_lsmod,
+ .usage = "list modules",
+U_BOOT_CMD_END
diff --git a/commands/true.c b/commands/true.c
new file mode 100644
index 0000000000..1ec59330bf
--- /dev/null
+++ b/commands/true.c
@@ -0,0 +1,37 @@
+/*
+ * (C) Copyright 2000-2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+static int do_true (cmd_tbl_t *cmdtp, int argc, char *argv[])
+{
+ return 0;
+}
+
+U_BOOT_CMD_START(true)
+ .maxargs = 1,
+ .cmd = do_true,
+ .usage = "do nothing, successfully",
+U_BOOT_CMD_END
+
diff --git a/commands/version.c b/commands/version.c
new file mode 100644
index 0000000000..b9075b9668
--- /dev/null
+++ b/commands/version.c
@@ -0,0 +1,39 @@
+/*
+ * (C) Copyright 2000-2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+static int do_version (cmd_tbl_t *cmdtp, int argc, char *argv[])
+{
+ extern char version_string[];
+ printf ("\n%s\n", version_string);
+ return 0;
+}
+
+U_BOOT_CMD_START(version)
+ .maxargs = 1,
+ .cmd = do_version,
+ .usage = "print monitor version",
+U_BOOT_CMD_END
+