Blame view

common/cmd_sandbox.c 3.04 KB
d304931f2   Simon Glass   sandbox: Add 'sb'...
1
2
3
  /*
   * Copyright (c) 2012, Google Inc.
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
4
   * SPDX-License-Identifier:	GPL-2.0+
d304931f2   Simon Glass   sandbox: Add 'sb'...
5
6
7
8
   */
  
  #include <common.h>
  #include <fs.h>
f4d8de48f   Henrik Nordström   sandbox: block dr...
9
10
11
  #include <part.h>
  #include <sandboxblockdev.h>
  #include <asm/errno.h>
d304931f2   Simon Glass   sandbox: Add 'sb'...
12
13
14
15
  
  static int do_sandbox_load(cmd_tbl_t *cmdtp, int flag, int argc,
  			   char * const argv[])
  {
9ade4857a   Tom Rini   cmd_sandbox.c: Up...
16
  	return do_load(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX);
d304931f2   Simon Glass   sandbox: Add 'sb'...
17
18
19
20
21
22
23
  }
  
  static int do_sandbox_ls(cmd_tbl_t *cmdtp, int flag, int argc,
  			   char * const argv[])
  {
  	return do_ls(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX);
  }
7eb2c8d57   Simon Glass   sandbox: fs: Add ...
24
25
26
  static int do_sandbox_save(cmd_tbl_t *cmdtp, int flag, int argc,
  			   char * const argv[])
  {
9ade4857a   Tom Rini   cmd_sandbox.c: Up...
27
  	return do_save(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX);
7eb2c8d57   Simon Glass   sandbox: fs: Add ...
28
  }
f4d8de48f   Henrik Nordström   sandbox: block dr...
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  static int do_sandbox_bind(cmd_tbl_t *cmdtp, int flag, int argc,
  			   char * const argv[])
  {
  	if (argc < 2 || argc > 3)
  		return CMD_RET_USAGE;
  	char *ep;
  	char *dev_str = argv[1];
  	char *file = argc >= 3 ? argv[2] : NULL;
  	int dev = simple_strtoul(dev_str, &ep, 16);
  	if (*ep) {
  		printf("** Bad device specification %s **
  ", dev_str);
  		return CMD_RET_USAGE;
  	}
  	return host_dev_bind(dev, file);
  }
  
  static int do_sandbox_info(cmd_tbl_t *cmdtp, int flag, int argc,
  			   char * const argv[])
  {
  	if (argc < 1 || argc > 2)
  		return CMD_RET_USAGE;
  	int min_dev = 0;
  	int max_dev = CONFIG_HOST_MAX_DEVICES - 1;
  	if (argc >= 2) {
  		char *ep;
  		char *dev_str = argv[1];
  		int dev = simple_strtoul(dev_str, &ep, 16);
  		if (*ep) {
  			printf("** Bad device specification %s **
  ", dev_str);
  			return CMD_RET_USAGE;
  		}
  		min_dev = dev;
  		max_dev = dev;
  	}
  	int dev;
  	printf("%3s %12s %s
  ", "dev", "blocks", "path");
  	for (dev = min_dev; dev <= max_dev; dev++) {
  		block_dev_desc_t *blk_dev;
  		int ret;
  
  		printf("%3d ", dev);
  		ret = host_get_dev_err(dev, &blk_dev);
  		if (ret) {
  			if (ret == -ENOENT)
  				puts("Not bound to a backing file
  ");
  			else if (ret == -ENODEV)
  				puts("Invalid host device number
  ");
  
  			continue;
  		}
  		struct host_block_dev *host_dev = blk_dev->priv;
  		printf("%12lu %s
  ", (unsigned long)blk_dev->lba,
  		       host_dev->filename);
  	}
  	return 0;
  }
d304931f2   Simon Glass   sandbox: Add 'sb'...
91
  static cmd_tbl_t cmd_sandbox_sub[] = {
7eb2c8d57   Simon Glass   sandbox: fs: Add ...
92
  	U_BOOT_CMD_MKENT(load, 7, 0, do_sandbox_load, "", ""),
d304931f2   Simon Glass   sandbox: Add 'sb'...
93
  	U_BOOT_CMD_MKENT(ls, 3, 0, do_sandbox_ls, "", ""),
7eb2c8d57   Simon Glass   sandbox: fs: Add ...
94
  	U_BOOT_CMD_MKENT(save, 6, 0, do_sandbox_save, "", ""),
f4d8de48f   Henrik Nordström   sandbox: block dr...
95
96
  	U_BOOT_CMD_MKENT(bind, 3, 0, do_sandbox_bind, "", ""),
  	U_BOOT_CMD_MKENT(info, 3, 0, do_sandbox_info, "", ""),
d304931f2   Simon Glass   sandbox: Add 'sb'...
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  };
  
  static int do_sandbox(cmd_tbl_t *cmdtp, int flag, int argc,
  		      char * const argv[])
  {
  	cmd_tbl_t *c;
  
  	/* Skip past 'sandbox' */
  	argc--;
  	argv++;
  
  	c = find_cmd_tbl(argv[0], cmd_sandbox_sub,
  			 ARRAY_SIZE(cmd_sandbox_sub));
  
  	if (c)
  		return c->cmd(cmdtp, flag, argc, argv);
  	else
  		return CMD_RET_USAGE;
  }
  
  U_BOOT_CMD(
7eb2c8d57   Simon Glass   sandbox: fs: Add ...
118
  	sb,	8,	1,	do_sandbox,
d304931f2   Simon Glass   sandbox: Add 'sb'...
119
  	"Miscellaneous sandbox commands",
7eb2c8d57   Simon Glass   sandbox: fs: Add ...
120
121
122
123
124
125
126
127
  	"load host <dev> <addr> <filename> [<bytes> <offset>]  - "
  		"load a file from host
  "
  	"sb ls host <filename>                      - list files on host
  "
  	"sb save host <dev> <filename> <addr> <bytes> [<offset>] - "
  		"save a file to host
  "
f4d8de48f   Henrik Nordström   sandbox: block dr...
128
129
130
  	"sb bind <dev> [<filename>] - bind \"host\" device to file
  "
  	"sb info [<dev>]            - show device binding & info"
d304931f2   Simon Glass   sandbox: Add 'sb'...
131
  );