[U-Boot] [PATCH v5 0/9] Unified command execution in one place

Simon Glass sjg at chromium.org
Wed Feb 15 06:59:17 CET 2012


At present two parsers have similar code to execute commands. Also
cmd_usage() is called all over the place. This series adds a single
function which processes commands called cmd_process().

This new function understands return codes, and in particular
CMD_RET_USAGE to indicate a usage error. So rather than calling
cmd_usage() themselves, the command handlers can just return this
error.

There appears to be a run_command2() which is used to run commands
with the selected parser. This series changes this in two separate
steps to just run_command(), and renames the old run_command() to
builtin_run_command(). No one should call this outside main.c since
if the hush parser is being used it is wrong to call it. The
built-in parser code could move into a separate file perhaps in a
future patch.

The overall series reduces code size on ARM by about 1KB on
my ~160KB U-Boot text region when the hush parser is used, and around
60 bytes when it isn't.

As an aside the only user of parse_line() is fsl_ddr_interactive()
which seems to have its own command line interface which operates
before DRAM is set up. Do I have this right? Is there no way this
could be done later from a normal U-Boot command?

(I have run this through MAKEALL and it seems clean)

Changes in v2:
- Fix minor errors one of which created a warning
- Squash i2c patch into the common/ patch

Changes in v3:
- Rebase to master

Changes in v4:
- Add a 'repeatable' parameter to cmd_process()
- Make cmd_process() return only success (0) or failure (1)
- Minor comment change for call to builtin_run_command()
- Rationalise return codes to 0, 1 and usage

Changes in v5:
- Add function comment to run_command()
- Adjust commit message to make it easier for Mike to grok
- Move cmd_call() prototype inside existing #ifdef __ASSEMBLY__
- Tidy up function comment to bring in changes in a later patch
- Use existing #ifdef __ASSEMBLY__ rather than create a new one

Simon Glass (9):
  Remove CMD_PXE's static on run_command()
  Rename run_command() to builtin_run_command()
  Rename run_command2() to run_command()
  Stop using builtin_run_command()
  Don't include standard parser if hush is used
  Create a single cmd_call() function to handle command execution
  Remove interleave of non-U-Boot code in hush
  Add cmd_process() to process commands in one place
  Convert cmd_usage() calls in common to use a return value

 arch/arm/cpu/arm926ejs/kirkwood/cpu.c |    7 +--
 board/esd/common/cmd_loadpci.c        |    2 +-
 board/esd/du440/du440.c               |    2 +-
 common/cmd_bedbug.c                   |    6 +-
 common/cmd_bmp.c                      |    6 +-
 common/cmd_boot.c                     |    2 +-
 common/cmd_bootm.c                    |   10 +---
 common/cmd_cache.c                    |    4 +-
 common/cmd_dataflash_mmc_mux.c        |    2 +-
 common/cmd_date.c                     |    3 +-
 common/cmd_dcr.c                      |    8 +-
 common/cmd_df.c                       |    2 +-
 common/cmd_eeprom.c                   |    2 +-
 common/cmd_ext2.c                     |    4 +-
 common/cmd_fdc.c                      |    2 +-
 common/cmd_fdos.c                     |    2 +-
 common/cmd_fdt.c                      |   14 ++--
 common/cmd_fitupd.c                   |    2 +-
 common/cmd_flash.c                    |   14 ++--
 common/cmd_fpga.c                     |    4 +-
 common/cmd_gpio.c                     |    2 +-
 common/cmd_i2c.c                      |   32 +++++-----
 common/cmd_ide.c                      |   10 ++--
 common/cmd_irq.c                      |    2 +-
 common/cmd_itest.c                    |    2 +-
 common/cmd_led.c                      |    6 +-
 common/cmd_load.c                     |    2 +-
 common/cmd_log.c                      |    4 +-
 common/cmd_md5sum.c                   |    2 +-
 common/cmd_mdio.c                     |    2 +-
 common/cmd_mem.c                      |   22 ++++----
 common/cmd_mfsl.c                     |   10 ++--
 common/cmd_mgdisk.c                   |    2 +-
 common/cmd_mii.c                      |    4 +-
 common/cmd_misc.c                     |    2 +-
 common/cmd_mmc.c                      |   14 ++--
 common/cmd_mmc_spi.c                  |    3 +-
 common/cmd_mp.c                       |    8 +-
 common/cmd_mtdparts.c                 |    2 +-
 common/cmd_nand.c                     |    6 +-
 common/cmd_net.c                      |    6 +-
 common/cmd_nvedit.c                   |   22 ++++----
 common/cmd_onenand.c                  |   12 ++--
 common/cmd_otp.c                      |    2 +-
 common/cmd_pci.c                      |    2 +-
 common/cmd_portio.c                   |    4 +-
 common/cmd_pxe.c                      |   10 ++--
 common/cmd_reiser.c                   |    4 +-
 common/cmd_sata.c                     |    8 +-
 common/cmd_scsi.c                     |   15 +++--
 common/cmd_setexpr.c                  |    2 +-
 common/cmd_sf.c                       |    2 +-
 common/cmd_sha1sum.c                  |    2 +-
 common/cmd_source.c                   |    2 +-
 common/cmd_strings.c                  |    2 +-
 common/cmd_time.c                     |    4 +-
 common/cmd_ubi.c                      |    4 +-
 common/cmd_ubifs.c                    |   10 ++--
 common/cmd_unzip.c                    |    2 +-
 common/cmd_usb.c                      |    6 +-
 common/command.c                      |   60 +++++++++++++++++++
 common/hush.c                         |   69 ++++++-----------------
 common/main.c                         |  101 +++++++++++----------------------
 include/command.h                     |   30 ++++++++++
 include/common.h                      |    5 +-
 65 files changed, 315 insertions(+), 306 deletions(-)

-- 
1.7.7.3



More information about the U-Boot mailing list