~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/include/command.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * (C) Copyright 2000-2009
 
3
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 
4
 *
 
5
 * SPDX-License-Identifier:     GPL-2.0+
 
6
 */
 
7
 
 
8
/*
 
9
 *  Definitions for Command Processor
 
10
 */
 
11
#ifndef __COMMAND_H
 
12
#define __COMMAND_H
 
13
 
 
14
#include <config.h>
 
15
#include <linker_lists.h>
 
16
 
 
17
#ifndef NULL
 
18
#define NULL    0
 
19
#endif
 
20
 
 
21
/* Default to a width of 8 characters for help message command width */
 
22
#ifndef CONFIG_SYS_HELP_CMD_WIDTH
 
23
#define CONFIG_SYS_HELP_CMD_WIDTH       8
 
24
#endif
 
25
 
 
26
#ifndef __ASSEMBLY__
 
27
/*
 
28
 * Monitor Command Table
 
29
 */
 
30
 
 
31
struct cmd_tbl_s {
 
32
        char            *name;          /* Command Name                 */
 
33
        int             maxargs;        /* maximum number of arguments  */
 
34
        int             repeatable;     /* autorepeat allowed?          */
 
35
                                        /* Implementation function      */
 
36
        int             (*cmd)(struct cmd_tbl_s *, int, int, char * const []);
 
37
        char            *usage;         /* Usage message        (short) */
 
38
#ifdef  CONFIG_SYS_LONGHELP
 
39
        char            *help;          /* Help  message        (long)  */
 
40
#endif
 
41
#ifdef CONFIG_AUTO_COMPLETE
 
42
        /* do auto completion on the arguments */
 
43
        int             (*complete)(int argc, char * const argv[], char last_char, int maxv, char *cmdv[]);
 
44
#endif
 
45
};
 
46
 
 
47
typedef struct cmd_tbl_s        cmd_tbl_t;
 
48
 
 
49
 
 
50
#if defined(CONFIG_CMD_RUN)
 
51
extern int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
52
#endif
 
53
 
 
54
/* common/command.c */
 
55
int _do_help (cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp, int
 
56
              flag, int argc, char * const argv[]);
 
57
cmd_tbl_t *find_cmd(const char *cmd);
 
58
cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len);
 
59
 
 
60
extern int cmd_usage(const cmd_tbl_t *cmdtp);
 
61
 
 
62
#ifdef CONFIG_AUTO_COMPLETE
 
63
extern int var_complete(int argc, char * const argv[], char last_char, int maxv, char *cmdv[]);
 
64
extern int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp);
 
65
#endif
 
66
 
 
67
/**
 
68
 * cmd_process_error() - report and process a possible error
 
69
 *
 
70
 * @cmdtp: Command which caused the error
 
71
 * @err: Error code (0 if none, -ve for error, like -EIO)
 
72
 * @return 0 if there is not error, 1 (CMD_RET_FAILURE) if an error is found
 
73
 */
 
74
int cmd_process_error(cmd_tbl_t *cmdtp, int err);
 
75
 
 
76
/*
 
77
 * Monitor Command
 
78
 *
 
79
 * All commands use a common argument format:
 
80
 *
 
81
 * void function (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
82
 */
 
83
 
 
84
#if defined(CONFIG_CMD_MEMORY)          \
 
85
        || defined(CONFIG_CMD_I2C)      \
 
86
        || defined(CONFIG_CMD_ITEST)    \
 
87
        || defined(CONFIG_CMD_PCI)      \
 
88
        || defined(CONFIG_CMD_PORTIO)
 
89
#define CMD_DATA_SIZE
 
90
extern int cmd_get_data_size(char* arg, int default_size);
 
91
#endif
 
92
 
 
93
#ifdef CONFIG_CMD_BOOTD
 
94
extern int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
95
#endif
 
96
#ifdef CONFIG_CMD_BOOTM
 
97
extern int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
98
extern int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd);
 
99
#else
 
100
static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
 
101
{
 
102
        return 0;
 
103
}
 
104
#endif
 
105
 
 
106
extern int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
107
 
 
108
extern int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
 
109
                           char *const argv[]);
 
110
 
 
111
extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
112
 
 
113
/*
 
114
 * Error codes that commands return to cmd_process(). We use the standard 0
 
115
 * and 1 for success and failure, but add one more case - failure with a
 
116
 * request to call cmd_usage(). But the cmd_process() function handles
 
117
 * CMD_RET_USAGE itself and after calling cmd_usage() it will return 1.
 
118
 * This is just a convenience for commands to avoid them having to call
 
119
 * cmd_usage() all over the place.
 
120
 */
 
121
enum command_ret_t {
 
122
        CMD_RET_SUCCESS,        /* 0 = Success */
 
123
        CMD_RET_FAILURE,        /* 1 = Failure */
 
124
        CMD_RET_USAGE = -1,     /* Failure, please report 'usage' error */
 
125
};
 
126
 
 
127
/**
 
128
 * Process a command with arguments. We look up the command and execute it
 
129
 * if valid. Otherwise we print a usage message.
 
130
 *
 
131
 * @param flag          Some flags normally 0 (see CMD_FLAG_.. above)
 
132
 * @param argc          Number of arguments (arg 0 must be the command text)
 
133
 * @param argv          Arguments
 
134
 * @param repeatable    This function sets this to 0 if the command is not
 
135
 *                      repeatable. If the command is repeatable, the value
 
136
 *                      is left unchanged.
 
137
 * @param ticks         If ticks is not null, this function set it to the
 
138
 *                      number of ticks the command took to complete.
 
139
 * @return 0 if the command succeeded, 1 if it failed
 
140
 */
 
141
int cmd_process(int flag, int argc, char * const argv[],
 
142
                               int *repeatable, unsigned long *ticks);
 
143
 
 
144
#endif  /* __ASSEMBLY__ */
 
145
 
 
146
/*
 
147
 * Command Flags:
 
148
 */
 
149
#define CMD_FLAG_REPEAT         0x0001  /* repeat last command          */
 
150
#define CMD_FLAG_BOOTD          0x0002  /* command is from bootd        */
 
151
 
 
152
#ifdef CONFIG_AUTO_COMPLETE
 
153
# define _CMD_COMPLETE(x) x,
 
154
#else
 
155
# define _CMD_COMPLETE(x)
 
156
#endif
 
157
#ifdef CONFIG_SYS_LONGHELP
 
158
# define _CMD_HELP(x) x,
 
159
#else
 
160
# define _CMD_HELP(x)
 
161
#endif
 
162
 
 
163
#define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,          \
 
164
                                _usage, _help, _comp)                   \
 
165
                { #_name, _maxargs, _rep, _cmd, _usage,                 \
 
166
                        _CMD_HELP(_help) _CMD_COMPLETE(_comp) }
 
167
 
 
168
#define U_BOOT_CMD_MKENT(_name, _maxargs, _rep, _cmd, _usage, _help)    \
 
169
        U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,          \
 
170
                                        _usage, _help, NULL)
 
171
 
 
172
#define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \
 
173
        ll_entry_declare(cmd_tbl_t, _name, cmd) =                       \
 
174
                U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,  \
 
175
                                                _usage, _help, _comp);
 
176
 
 
177
#define U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help)          \
 
178
        U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, NULL)
 
179
 
 
180
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
 
181
void fixup_cmdtable(cmd_tbl_t *cmdtp, int size);
 
182
#endif
 
183
 
 
184
#endif  /* __COMMAND_H */