9
0
Fork 0

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>
This commit is contained in:
Sascha Hauer 2011-11-26 21:33:59 +01:00
parent 6fa8c93a5e
commit 020a30be0d
12 changed files with 102 additions and 1 deletions

View File

@ -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 = .;

View File

@ -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 = .;

View File

@ -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 = .;

View File

@ -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 = .;

View File

@ -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 = .;

View File

@ -7,6 +7,11 @@ SECTIONS
__barebox_initcalls : { INITCALLS }
__barebox_initcalls_end = .;
. = ALIGN(64);
__barebox_magicvar_start = .;
.barebox_magicvar : { BAREBOX_MAGICVARS }
__barebox_magicvar_end = .;
. = ALIGN(64);
__barebox_cmd_start = .;
__barebox_cmd : { BAREBOX_CMDS }

View File

@ -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 = .;

View File

@ -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

View File

@ -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

20
commands/magicvar.c Normal file
View File

@ -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

View File

@ -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*)))

32
include/magicvar.h Normal file
View File

@ -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 */