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