[U-Boot] [PATCH 3/6] sandbox: Implement host dev [device]

Simon Glass sjg at chromium.org
Fri Feb 20 20:23:06 CET 2015


Hi Sjoerd,

On 19 February 2015 at 15:41, Sjoerd Simons
<sjoerd.simons at collabora.co.uk> wrote:
> A common pattern to check if a certain device exists (e.g. in
> config_distro_bootcmd) is to use: <interface> dev [device]
>
> Implement host dev [device] so this pattern can be used for sandbox host
> devices.

I don't see where this actually affects anything? In other words, does
it really use the device you select, or just ignore you?

> Signed-off-by: Sjoerd Simons <sjoerd.simons at collabora.co.uk>
> ---
>  common/cmd_sandbox.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>
> diff --git a/common/cmd_sandbox.c b/common/cmd_sandbox.c
> index 4286969..7447d43 100644
> --- a/common/cmd_sandbox.c
> +++ b/common/cmd_sandbox.c
> @@ -10,6 +10,8 @@
>  #include <sandboxblockdev.h>
>  #include <asm/errno.h>
>
> +static int sandbox_curr_device = -1;
> +
>  static int do_sandbox_load(cmd_tbl_t *cmdtp, int flag, int argc,
>                            char * const argv[])
>  {
> @@ -124,3 +126,49 @@ U_BOOT_CMD(
>         "sb commands use the \"hostfs\" device. The \"host\" device is used\n"
>         "with standard IO commands such as fatls or ext2load"
>  );
> +
> +
> +static int do_host_dev(cmd_tbl_t *cmdtp, int flag, int argc,
> +                      char * const argv[])
> +{
> +       int dev;
> +       char *ep;
> +       block_dev_desc_t *blk_dev;
> +       int ret;
> +
> +       if (argc < 2 || strcmp(argv[1], "dev"))
> +               return CMD_RET_USAGE;
> +
> +       if (argc == 2) {
> +               if (sandbox_curr_device < 0) {
> +                       printf("No current host device\n");
> +                       return 1;
> +               }
> +               printf ("Current host device %d\n", sandbox_curr_device);
> +               return 0;
> +       }
> +
> +       dev = simple_strtoul(argv[2], &ep, 16);
> +       if (*ep) {
> +               printf("** Bad device specification %s **\n", argv[2]);
> +               return CMD_RET_USAGE;
> +       }
> +
> +       ret = host_get_dev_err(dev, &blk_dev);
> +       if (ret) {
> +               if (ret == -ENOENT)
> +                       puts("Not bound to a backing file\n");

Just use printf(), we should avoid puts() now.

> +               else if (ret == -ENODEV)
> +                       puts("Invalid host device number\n");
> +
> +               return 1;
> +       }
> +
> +       sandbox_curr_device = dev;
> +       return 0;
> +}
> +
> +U_BOOT_CMD(
> +       host, 3, 2, do_host_dev,
> +       "Set or get current host device", "dev [dev] - Set or retrieve the current host device"

Can we make this command part of the 'sb' command? Like 'sh host ...'.

> +);
> --
> 2.1.4
>

Regards,
Simon


More information about the U-Boot mailing list