9
0
Fork 0
barebox/include/command.h

114 lines
2.8 KiB
C

/*
* (C) Copyright 2000
* 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
*/
/*
* Definitions for Command Processor
*/
#ifndef __COMMAND_H
#define __COMMAND_H
#ifndef NULL
#define NULL 0
#endif
#ifndef __ASSEMBLY__
/*
* Monitor Command Table
*/
struct cmd_tbl_s {
char *name; /* Command Name */
char **aliases;
int maxargs; /* maximum number of arguments */
/* Implementation function */
int (*cmd)(struct cmd_tbl_s *, int, char *[]);
char *usage; /* Usage message (short) */
#ifdef CONFIG_LONGHELP
char *help; /* Help message (long) */
#endif
#ifdef CONFIG_AUTO_COMPLETE
/* do auto completion on the arguments */
int (*complete)(int argc, char *argv[], char last_char, int maxv, char *cmdv[]);
#endif
}
#ifdef __x86_64__
/* This is required because the linker will put symbols on a 64 bit alignment */
__attribute__((aligned(64)))
#endif
;
typedef struct cmd_tbl_s cmd_tbl_t;
extern cmd_tbl_t __u_boot_cmd_start;
extern cmd_tbl_t __u_boot_cmd_end;
/* common/command.c */
cmd_tbl_t *find_cmd(const char *cmd);
void u_boot_cmd_usage(cmd_tbl_t *cmdtp);
#ifdef CONFIG_AUTO_COMPLETE
extern void install_auto_complete(void);
extern int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp);
#endif
/*
* Monitor Command
*
* All commands use a common argument format:
*
* void function (cmd_tbl_t *cmdtp, int argc, char *argv[]);
*/
typedef void command_t (cmd_tbl_t *, int, char *[]);
#endif /* __ASSEMBLY__ */
/*
* Configurable monitor commands definitions have been moved
* to include/cmd_confdefs.h
*/
#define __stringify_1(x) #x
#define __stringify(x) __stringify_1(x)
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))
#define U_BOOT_CMD_START(_name) \
const cmd_tbl_t __u_boot_cmd_##_name \
__attribute__ ((unused,section (".u_boot_cmd_" __stringify(_name)))) = { \
.name = #_name,
#define U_BOOT_CMD_END \
};
#ifdef CONFIG_LONGHELP
#define U_BOOT_CMD_HELP(text) .help = text,
#else
#define U_BOOT_CMD_HELP(text)
#endif
#endif /* __COMMAND_H */