diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-02-04 19:09:15 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-02-04 19:09:15 +0100 |
commit | ce961e341258dc9f78da3c0d64231cf1afdc4e63 (patch) | |
tree | 90c65241a72f55fbd67f58c05b091f714e4c2490 /commands | |
parent | 91d4a4264bc2dead4e3101c5064da35c78f4c89b (diff) | |
parent | cf715885604004ccfc30bc4caa75d58a75bb02c7 (diff) | |
download | barebox-ce961e341258dc9f78da3c0d64231cf1afdc4e63.tar.gz barebox-ce961e341258dc9f78da3c0d64231cf1afdc4e63.tar.xz |
Merge branch 'for-next/misc'
Diffstat (limited to 'commands')
-rw-r--r-- | commands/crc.c | 23 | ||||
-rw-r--r-- | commands/loadenv.c | 4 | ||||
-rw-r--r-- | commands/memtest.c | 15 |
3 files changed, 31 insertions, 11 deletions
diff --git a/commands/crc.c b/commands/crc.c index 9b6a3e2a4b..58b750eb95 100644 --- a/commands/crc.c +++ b/commands/crc.c @@ -46,9 +46,10 @@ static int do_crc(int argc, char *argv[]) #ifdef CONFIG_CMD_CRC_CMP char *vfilename = NULL; #endif + char *crcvarname = NULL, *sizevarname = NULL; int opt, err = 0, filegiven = 0, verify = 0; - while((opt = getopt(argc, argv, "f:F:v:V:")) > 0) { + while((opt = getopt(argc, argv, "f:F:v:V:r:s:")) > 0) { switch(opt) { case 'f': filename = optarg; @@ -60,6 +61,12 @@ static int do_crc(int argc, char *argv[]) vfilename = optarg; break; #endif + case 'r': + crcvarname = optarg; + break; + case 's': + sizevarname = optarg; + break; case 'v': verify = 1; vcrc = simple_strtoul(optarg, NULL, 0); @@ -89,6 +96,18 @@ static int do_crc(int argc, char *argv[]) printf("CRC32 for %s 0x%08lx ... 0x%08lx ==> 0x%08lx", filename, (ulong)start, (ulong)start + total - 1, crc); + if (crcvarname) { + char *crcstr = asprintf("0x%lx", crc); + setenv(crcvarname, crcstr); + kfree(crcstr); + } + + if (sizevarname) { + char *sizestr = asprintf("0x%lx", total); + setenv(sizevarname, sizestr); + kfree(sizestr); + } + #ifdef CONFIG_CMD_CRC_CMP if (vfilename) { size = total; @@ -118,6 +137,8 @@ BAREBOX_CMD_HELP_OPT ("-F FILE", "Use file to compare.") #endif BAREBOX_CMD_HELP_OPT ("-v CRC", "Verify") BAREBOX_CMD_HELP_OPT ("-V FILE", "Verify with CRC read from FILE") +BAREBOX_CMD_HELP_OPT ("-r <var>", "Set <var> to the checksum result\n") +BAREBOX_CMD_HELP_OPT ("-s <var>", "Set <var> to the data size\n") BAREBOX_CMD_HELP_END BAREBOX_CMD_START(crc32) diff --git a/commands/loadenv.c b/commands/loadenv.c index 91ce5e707c..8d6be2fa83 100644 --- a/commands/loadenv.c +++ b/commands/loadenv.c @@ -109,7 +109,7 @@ static int do_loadenv(int argc, char *argv[]) BAREBOX_CMD_HELP_START(loadenv) BAREBOX_CMD_HELP_TEXT("Load environment from files in ENVFS (default /dev/env0) in") -BAREBOX_CMD_HELP_TEXT("DIRECTORY (default /env") +BAREBOX_CMD_HELP_TEXT("DIRECTORY (default /env)") BAREBOX_CMD_HELP_TEXT("") BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT("-n", "do not overwrite existing files") @@ -120,7 +120,7 @@ BAREBOX_CMD_HELP_END BAREBOX_CMD_START(loadenv) .cmd = do_loadenv, BAREBOX_CMD_DESC("load environment from ENVFS") - BAREBOX_CMD_OPTS("{-nsd] [ENVFS] [DIRECTORY]") + BAREBOX_CMD_OPTS("[-nsd] [ENVFS] [DIRECTORY]") BAREBOX_CMD_GROUP(CMD_GRP_ENV) BAREBOX_CMD_HELP(cmd_loadenv_help) BAREBOX_CMD_END diff --git a/commands/memtest.c b/commands/memtest.c index d384436afb..9dec0efcba 100644 --- a/commands/memtest.c +++ b/commands/memtest.c @@ -60,8 +60,7 @@ static int request_memtest_regions(struct list_head *list) */ if (list_empty(&bank->res->children)) { start = PAGE_ALIGN(bank->res->start); - end = PAGE_ALIGN_DOWN(bank->res->end) - 1; - size = end - start + 1; + size = PAGE_ALIGN_DOWN(bank->res->end - start + 1); ret = alloc_memtest_region(list, start, size); if (ret < 0) @@ -89,13 +88,13 @@ static int request_memtest_regions(struct list_head *list) * Between used regions. Start from second entry. */ list_for_each_entry_from(r, &bank->res->children, sibling) { - start = PAGE_ALIGN(r_prev->end); - end = PAGE_ALIGN_DOWN(r->start); + start = PAGE_ALIGN(r_prev->end + 1); + end = r->start - 1; r_prev = r; if (start >= end) continue; - size = end - start; + size = PAGE_ALIGN_DOWN(end - start + 1); ret = alloc_memtest_region(list, start, size); if (ret < 0) return ret; @@ -107,9 +106,9 @@ static int request_memtest_regions(struct list_head *list) r = list_last_entry(&bank->res->children, struct resource, sibling); start = PAGE_ALIGN(r->end); - end = PAGE_ALIGN_DOWN(bank->res->end) - 1; - size = end - start + 1; - if (start < end) { + end = bank->res->end; + size = PAGE_ALIGN_DOWN(end - start + 1); + if (start < end && start > r->end) { ret = alloc_memtest_region(list, start, size); if (ret < 0) return ret; |