
It would be better to split common/main.c into a few chunks: readline, the standard parser and the real main. However such a change is fairly invasive.
For now, use #ifdef to remove the unwanted code.
This helps to reduce the image size by removing unwanted code.
Signed-off-by: Simon Glass sjg@chromium.org ---
common/command.c | 7 +++++++ common/main.c | 26 ++++++++++++++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/common/command.c b/common/command.c index 180ce27..dd09d08 100644 --- a/common/command.c +++ b/common/command.c @@ -481,6 +481,7 @@ void fixup_cmdtable(cmd_tbl_t *cmdtp, int size) } #endif
+#ifdef CONFIG_CMDLINE /** * Call a command function. This should be the only route in U-Boot to call * a command, so that we can track whether we are waiting for input or @@ -501,11 +502,14 @@ static int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) debug("Command failed, result=%d", result); return result; } +#endif /* CONFIG_CMDLINE */
enum command_ret_t cmd_process(int flag, int argc, char * const argv[], int *repeatable, ulong *ticks) { enum command_ret_t rc = CMD_RET_SUCCESS; + +#ifdef CONFIG_CMDLINE cmd_tbl_t *cmdtp;
/* Look up command in command table */ @@ -543,6 +547,9 @@ enum command_ret_t cmd_process(int flag, int argc, char * const argv[], } if (rc == CMD_RET_USAGE) rc = cmd_usage(cmdtp); +#else + rc = board_run_command(argv[0]); +#endif return rc; }
diff --git a/common/main.c b/common/main.c index cb021d3..2fdea01 100644 --- a/common/main.c +++ b/common/main.c @@ -45,7 +45,9 @@ void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progre
char console_buffer[CONFIG_SYS_CBSIZE + 1]; /* console I/O buffer */
+#ifdef CONFIG_CMDLINE static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen); +#endif static const char erase_seq[] = "\b \b"; /* erase sequence */ static const char tab_seq[] = " "; /* used to expand TABs */
@@ -421,7 +423,7 @@ static void process_boot_delay(void)
void main_loop(void) { -#ifndef CONFIG_SYS_HUSH_PARSER +#if defined(CONFIG_CMDLINE) && !defined(CONFIG_SYS_HUSH_PARSER) static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, }; int len; int rc = 1; @@ -464,8 +466,9 @@ void main_loop(void) # ifdef CONFIG_AUTOBOOT_KEYED int prev = disable_ctrlc(1); /* disable Control C checking */ # endif - +#ifdef CONFIG_CMDLINE run_command_list(p, -1, 0); +#endif
# ifdef CONFIG_AUTOBOOT_KEYED disable_ctrlc(prev); /* restore Control C checking */ @@ -483,6 +486,7 @@ void main_loop(void) /* * Main Loop for Monitor Command Processing */ +#ifdef CONFIG_CMDLINE #ifdef CONFIG_SYS_HUSH_PARSER parse_file_outer(); /* This point is never reached */ @@ -528,7 +532,8 @@ void main_loop(void) lastcommand[0] = 0; } } -#endif /*CONFIG_SYS_HUSH_PARSER*/ +#endif /* CONFIG_SYS_HUSH_PARSER */ +#endif /* CONFIG_CMDLINE */ }
#ifdef CONFIG_BOOT_RETRY_TIME @@ -983,6 +988,7 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
/****************************************************************************/
+#ifdef CONFIG_CMDLINE /* * Prompt for input and read a line. * If CONFIG_BOOT_RETRY_TIME is defined and retry_time >= 0, @@ -1211,10 +1217,10 @@ int parse_line (char *line, char *argv[]) debug_parser("parse_line: nargs=%d\n", nargs); return (nargs); } - +#endif /* CONFIG_CMDLINE */ /****************************************************************************/
-#ifndef CONFIG_SYS_HUSH_PARSER +#if !defined(CONFIG_SYS_HUSH_PARSER) && defined(CONFIG_CMDLINE) static void process_macros (const char *input, char *output) { char c, prev; @@ -1433,6 +1439,7 @@ static int builtin_run_command(const char *cmd, int flag) */ int run_command(const char *cmd, int flag) { +#ifdef CONFIG_CMDLINE #ifndef CONFIG_SYS_HUSH_PARSER /* * builtin_run_command can return 0 or 1 for success, so clean up @@ -1446,9 +1453,12 @@ int run_command(const char *cmd, int flag) return parse_string_outer(cmd, FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP); #endif +#else + return board_run_command(cmd); +#endif }
-#ifndef CONFIG_SYS_HUSH_PARSER +#if !defined(CONFIG_SYS_HUSH_PARSER) && defined(CONFIG_CMDLINE) /** * Execute a list of command separated by ; or \n using the built-in parser. * @@ -1493,6 +1503,7 @@ static int builtin_run_command_list(char *cmd, int flag)
int run_command_list(const char *cmd, int len, int flag) { +#ifdef CONFIG_CMDLINE int need_buff = 1; char *buff = (char *)cmd; /* cast away const */ int rcode = 0; @@ -1530,6 +1541,9 @@ int run_command_list(const char *cmd, int len, int flag) #endif
return rcode; +#else + return board_run_command(cmd); +#endif }
/****************************************************************************/