diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-11-26 21:33:59 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-11-29 20:51:31 +0100 |
commit | 020a30be0d9a3b56a98c4e4094d13d3b4e3bd4eb (patch) | |
tree | 58705c8fbff18a82690e25a34778f063054adf03 | |
parent | 6fa8c93a5ecefe4effa0e0425441a8ff6b2ce6ab (diff) | |
download | barebox-020a30be0d9a3b56a98c4e4094d13d3b4e3bd4eb.tar.gz barebox-020a30be0d9a3b56a98c4e4094d13d3b4e3bd4eb.tar.xz |
add magicvar command
The magicvar command gives an overview about all environment variables
with a special meaning.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/lib/barebox.lds.S | 4 | ||||
-rw-r--r-- | arch/blackfin/boards/ipe337/barebox.lds.S | 4 | ||||
-rw-r--r-- | arch/mips/lib/barebox.lds.S | 4 | ||||
-rw-r--r-- | arch/nios2/cpu/barebox.lds.S | 4 | ||||
-rw-r--r-- | arch/ppc/boards/pcm030/barebox.lds.S | 4 | ||||
-rw-r--r-- | arch/sandbox/board/barebox.lds.S | 5 | ||||
-rw-r--r-- | arch/x86/lib/barebox.lds.S | 9 | ||||
-rw-r--r-- | commands/Kconfig | 14 | ||||
-rw-r--r-- | commands/Makefile | 1 | ||||
-rw-r--r-- | commands/magicvar.c | 20 | ||||
-rw-r--r-- | include/asm-generic/barebox.lds.h | 2 | ||||
-rw-r--r-- | include/magicvar.h | 32 |
12 files changed, 102 insertions, 1 deletions
diff --git a/arch/arm/lib/barebox.lds.S b/arch/arm/lib/barebox.lds.S index 81a91236c0..f05f34523c 100644 --- a/arch/arm/lib/barebox.lds.S +++ b/arch/arm/lib/barebox.lds.S @@ -80,6 +80,10 @@ SECTIONS .barebox_cmd : { BAREBOX_CMDS } __barebox_cmd_end = .; + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + __barebox_initcalls_start = .; .barebox_initcalls : { INITCALLS } __barebox_initcalls_end = .; diff --git a/arch/blackfin/boards/ipe337/barebox.lds.S b/arch/blackfin/boards/ipe337/barebox.lds.S index 571eeb113b..25ca988815 100644 --- a/arch/blackfin/boards/ipe337/barebox.lds.S +++ b/arch/blackfin/boards/ipe337/barebox.lds.S @@ -71,6 +71,10 @@ SECTIONS .barebox_cmd : { BAREBOX_CMDS } ___barebox_cmd_end = .; + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + ___barebox_initcalls_start = .; .barebox_initcalls : { INITCALLS } ___barebox_initcalls_end = .; diff --git a/arch/mips/lib/barebox.lds.S b/arch/mips/lib/barebox.lds.S index ba4c0afc11..7746ea0c71 100644 --- a/arch/mips/lib/barebox.lds.S +++ b/arch/mips/lib/barebox.lds.S @@ -56,6 +56,10 @@ SECTIONS .barebox_cmd : { BAREBOX_CMDS } __barebox_cmd_end = .; + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + __barebox_initcalls_start = .; .barebox_initcalls : { INITCALLS } __barebox_initcalls_end = .; diff --git a/arch/nios2/cpu/barebox.lds.S b/arch/nios2/cpu/barebox.lds.S index 2b626fb51e..934eaf7cac 100644 --- a/arch/nios2/cpu/barebox.lds.S +++ b/arch/nios2/cpu/barebox.lds.S @@ -56,6 +56,10 @@ SECTIONS .barebox_cmd : { BAREBOX_CMDS } __barebox_cmd_end = .; + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + __barebox_initcalls_start = .; .barebox_initcalls : { INITCALLS } __barebox_initcalls_end = .; diff --git a/arch/ppc/boards/pcm030/barebox.lds.S b/arch/ppc/boards/pcm030/barebox.lds.S index 4aacfc5f12..7dda039dbb 100644 --- a/arch/ppc/boards/pcm030/barebox.lds.S +++ b/arch/ppc/boards/pcm030/barebox.lds.S @@ -102,6 +102,10 @@ SECTIONS .barebox_cmd : { BAREBOX_CMDS } __barebox_cmd_end = .; + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + __barebox_initcalls_start = .; .barebox_initcalls : { INITCALLS } __barebox_initcalls_end = .; diff --git a/arch/sandbox/board/barebox.lds.S b/arch/sandbox/board/barebox.lds.S index 76975eea63..db5b7deb23 100644 --- a/arch/sandbox/board/barebox.lds.S +++ b/arch/sandbox/board/barebox.lds.S @@ -8,6 +8,11 @@ SECTIONS __barebox_initcalls_end = .; . = ALIGN(64); + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + + . = ALIGN(64); __barebox_cmd_start = .; __barebox_cmd : { BAREBOX_CMDS } __barebox_cmd_end = .; diff --git a/arch/x86/lib/barebox.lds.S b/arch/x86/lib/barebox.lds.S index fffc3a55c6..716cea6a68 100644 --- a/arch/x86/lib/barebox.lds.S +++ b/arch/x86/lib/barebox.lds.S @@ -170,7 +170,14 @@ SECTIONS . = ALIGN(4); } > barebox - .barebox_initcalls : AT ( LOADADDR(.barebox_cmd) + SIZEOF (.barebox_cmd) ) { + .barebox_magicvars : AT ( LOADADDR(.barebox_cmd) + SIZEOF (.barebox_cmd) ) { + __barebox_magicvar_start = .; + .barebox_magicvar : { BAREBOX_MAGICVARS } + __barebox_magicvar_end = .; + . = ALIGN(4); + } > barebox + + .barebox_initcalls : AT ( LOADADDR(.barebox_magicvars) + SIZEOF (.barebox_magicvars) ) { __barebox_initcalls_start = .; INITCALLS __barebox_initcalls_end = .; diff --git a/commands/Kconfig b/commands/Kconfig index 18ab840916..78b9d2a0e6 100644 --- a/commands/Kconfig +++ b/commands/Kconfig @@ -383,6 +383,20 @@ config CMD_HELP default y prompt "help" +config CMD_MAGICVAR + tristate + prompt "magicvar" + help + barebox has some shell variables with special meanings. This + command shows the available magic variables. + +config CMD_MAGICVAR_HELP + bool + prompt "display description" + depends on CMD_MAGICVAR + help + Also display a description to the magic variables + config CMD_DEVINFO tristate default y diff --git a/commands/Makefile b/commands/Makefile index 5c519169c3..9b3a349bd2 100644 --- a/commands/Makefile +++ b/commands/Makefile @@ -58,3 +58,4 @@ obj-$(CONFIG_CMD_LED_TRIGGER) += trigger.o obj-$(CONFIG_CMD_USB) += usb.o obj-$(CONFIG_CMD_TIME) += time.o obj-$(CONFIG_CMD_OFTREE) += oftree.o +obj-$(CONFIG_CMD_MAGICVAR) += magicvar.o diff --git a/commands/magicvar.c b/commands/magicvar.c new file mode 100644 index 0000000000..31606d2afa --- /dev/null +++ b/commands/magicvar.c @@ -0,0 +1,20 @@ +#include <common.h> +#include <command.h> +#include <magicvar.h> + +static int do_magicvar(struct command *cmdtp, int argc, char *argv[]) +{ + struct magicvar *m; + + for (m = &__barebox_magicvar_start; + m != &__barebox_magicvar_end; + m++) + printf("%-32s %s\n", m->name, m->description); + + return 0; +} + +BAREBOX_CMD_START(magicvar) + .cmd = do_magicvar, + .usage = "List information about magic variables", +BAREBOX_CMD_END diff --git a/include/asm-generic/barebox.lds.h b/include/asm-generic/barebox.lds.h index 8aee5d2ce4..5467d3a8a0 100644 --- a/include/asm-generic/barebox.lds.h +++ b/include/asm-generic/barebox.lds.h @@ -24,3 +24,5 @@ #define BAREBOX_CMDS KEEP(*(SORT_BY_NAME(.barebox_cmd*))) #define BAREBOX_SYMS KEEP(*(__usymtab)) + +#define BAREBOX_MAGICVARS KEEP(*(SORT_BY_NAME(.barebox_magicvar*))) diff --git a/include/magicvar.h b/include/magicvar.h new file mode 100644 index 0000000000..d27a2e32a3 --- /dev/null +++ b/include/magicvar.h @@ -0,0 +1,32 @@ +#ifndef __MAGIC_VARS_H +#define __MAGIC_VARS_H + +#include <linux/stringify.h> + +struct magicvar { + const char *name; + const char *description; +}; + +extern struct magicvar __barebox_magicvar_start; +extern struct magicvar __barebox_magicvar_end; + +#ifdef CONFIG_CMD_MAGICVAR_HELP +#define MAGICVAR_DESCRIPTION(d) (d) +#else +#define MAGICVAR_DESCRIPTION(d) NULL +#endif + +#ifdef CONFIG_CMD_MAGICVAR +#define BAREBOX_MAGICVAR(_name, _description) \ +extern const struct magicvar __barebox_magicvar_##_name; \ +const struct magicvar __barebox_magicvar_##_name \ + __attribute__ ((unused,section (".barebox_magicvar_" __stringify(_name)))) = { \ + .name = #_name, \ + .description = MAGICVAR_DESCRIPTION(_description), \ +}; +#else +#define BAREBOX_MAGICVAR(_name, _description) +#endif + +#endif /* __MAGIC_VARS_H */ |