Blame view
cmd/host.c
4.46 KB
d304931f2 sandbox: Add 'sb'... |
1 2 3 |
/* * Copyright (c) 2012, Google Inc. * |
1a4596601 Add GPL-2.0+ SPDX... |
4 |
* SPDX-License-Identifier: GPL-2.0+ |
d304931f2 sandbox: Add 'sb'... |
5 6 7 |
*/ #include <common.h> |
40fd05089 dm: sandbox: Add ... |
8 |
#include <dm.h> |
d304931f2 sandbox: Add 'sb'... |
9 |
#include <fs.h> |
f4d8de48f sandbox: block dr... |
10 11 |
#include <part.h> #include <sandboxblockdev.h> |
1221ce459 treewide: replace... |
12 |
#include <linux/errno.h> |
d304931f2 sandbox: Add 'sb'... |
13 |
|
9b97b6ba2 sandbox: Implemen... |
14 |
static int host_curr_device = -1; |
bacfb1df9 sandbox: Renamed ... |
15 |
static int do_host_load(cmd_tbl_t *cmdtp, int flag, int argc, |
d304931f2 sandbox: Add 'sb'... |
16 17 |
char * const argv[]) { |
9ade4857a cmd_sandbox.c: Up... |
18 |
return do_load(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX); |
d304931f2 sandbox: Add 'sb'... |
19 |
} |
bacfb1df9 sandbox: Renamed ... |
20 |
static int do_host_ls(cmd_tbl_t *cmdtp, int flag, int argc, |
d304931f2 sandbox: Add 'sb'... |
21 22 23 24 |
char * const argv[]) { return do_ls(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX); } |
49afb3798 sandbox: Add "hos... |
25 26 27 28 29 |
static int do_host_size(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { return do_size(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX); } |
bacfb1df9 sandbox: Renamed ... |
30 |
static int do_host_save(cmd_tbl_t *cmdtp, int flag, int argc, |
7eb2c8d57 sandbox: fs: Add ... |
31 32 |
char * const argv[]) { |
9ade4857a cmd_sandbox.c: Up... |
33 |
return do_save(cmdtp, flag, argc, argv, FS_TYPE_SANDBOX); |
7eb2c8d57 sandbox: fs: Add ... |
34 |
} |
bacfb1df9 sandbox: Renamed ... |
35 |
static int do_host_bind(cmd_tbl_t *cmdtp, int flag, int argc, |
f4d8de48f sandbox: block dr... |
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
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); } |
bacfb1df9 sandbox: Renamed ... |
51 |
static int do_host_info(cmd_tbl_t *cmdtp, int flag, int argc, |
f4d8de48f sandbox: block dr... |
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
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++) { |
4101f6879 dm: Drop the bloc... |
74 |
struct blk_desc *blk_dev; |
f4d8de48f sandbox: block dr... |
75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
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; } |
40fd05089 dm: sandbox: Add ... |
89 90 91 92 93 94 95 |
struct host_block_dev *host_dev; #ifdef CONFIG_BLK host_dev = dev_get_priv(blk_dev->bdev); #else host_dev = blk_dev->priv; #endif |
f4d8de48f sandbox: block dr... |
96 97 98 99 100 101 |
printf("%12lu %s ", (unsigned long)blk_dev->lba, host_dev->filename); } return 0; } |
9b97b6ba2 sandbox: Implemen... |
102 103 104 105 106 |
static int do_host_dev(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int dev; char *ep; |
4101f6879 dm: Drop the bloc... |
107 |
struct blk_desc *blk_dev; |
9b97b6ba2 sandbox: Implemen... |
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
int ret; if (argc < 1 || argc > 3) return CMD_RET_USAGE; if (argc == 1) { if (host_curr_device < 0) { printf("No current host device "); return 1; } printf("Current host device %d ", host_curr_device); return 0; } dev = simple_strtoul(argv[1], &ep, 16); if (*ep) { printf("** Bad device specification %s ** ", 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 "); else if (ret == -ENODEV) puts("Invalid host device number "); return 1; } host_curr_device = dev; return 0; } |
bacfb1df9 sandbox: Renamed ... |
146 147 148 149 |
static cmd_tbl_t cmd_host_sub[] = { U_BOOT_CMD_MKENT(load, 7, 0, do_host_load, "", ""), U_BOOT_CMD_MKENT(ls, 3, 0, do_host_ls, "", ""), U_BOOT_CMD_MKENT(save, 6, 0, do_host_save, "", ""), |
49afb3798 sandbox: Add "hos... |
150 |
U_BOOT_CMD_MKENT(size, 3, 0, do_host_size, "", ""), |
bacfb1df9 sandbox: Renamed ... |
151 152 |
U_BOOT_CMD_MKENT(bind, 3, 0, do_host_bind, "", ""), U_BOOT_CMD_MKENT(info, 3, 0, do_host_info, "", ""), |
9b97b6ba2 sandbox: Implemen... |
153 |
U_BOOT_CMD_MKENT(dev, 0, 1, do_host_dev, "", ""), |
d304931f2 sandbox: Add 'sb'... |
154 |
}; |
bacfb1df9 sandbox: Renamed ... |
155 |
static int do_host(cmd_tbl_t *cmdtp, int flag, int argc, |
d304931f2 sandbox: Add 'sb'... |
156 157 158 |
char * const argv[]) { cmd_tbl_t *c; |
bacfb1df9 sandbox: Renamed ... |
159 |
/* Skip past 'host' */ |
d304931f2 sandbox: Add 'sb'... |
160 161 |
argc--; argv++; |
bacfb1df9 sandbox: Renamed ... |
162 163 |
c = find_cmd_tbl(argv[0], cmd_host_sub, ARRAY_SIZE(cmd_host_sub)); |
d304931f2 sandbox: Add 'sb'... |
164 165 166 167 168 169 170 171 |
if (c) return c->cmd(cmdtp, flag, argc, argv); else return CMD_RET_USAGE; } U_BOOT_CMD( |
bacfb1df9 sandbox: Renamed ... |
172 173 174 175 176 177 178 |
sb, 8, 1, do_host, "Deprecated: use 'host' command instead.", "" ); U_BOOT_CMD( host, 8, 1, do_host, "Miscellaneous host commands", |
4d907025d sandbox: restore ... |
179 |
"load hostfs - <addr> <filename> [<bytes> <offset>] - " |
7eb2c8d57 sandbox: fs: Add ... |
180 181 |
"load a file from host " |
bacfb1df9 sandbox: Renamed ... |
182 183 184 |
"host ls hostfs - <filename> - list files on host " "host save hostfs - <addr> <filename> <bytes> [<offset>] - " |
7eb2c8d57 sandbox: fs: Add ... |
185 186 |
"save a file to host " |
6baa692f9 cmd/host: add mis... |
187 188 |
"host size hostfs - <filename> - determine size of file on host " |
bacfb1df9 sandbox: Renamed ... |
189 190 191 192 |
"host bind <dev> [<filename>] - bind \"host\" device to file " "host info [<dev>] - show device binding & info " |
9b97b6ba2 sandbox: Implemen... |
193 194 |
"host dev [<dev>] - Set or retrieve the current host device " |
bacfb1df9 sandbox: Renamed ... |
195 196 |
"host commands use the \"hostfs\" device. The \"host\" device is used " |
4d907025d sandbox: restore ... |
197 |
"with standard IO commands such as fatls or ext2load" |
d304931f2 sandbox: Add 'sb'... |
198 |
); |