diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2019-01-28 22:55:32 -0800 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-01-29 09:21:28 +0100 |
commit | 184d75a9dee979bf044649bff2854bc66172c9ff (patch) | |
tree | 7205a5e431d0f9728c10218695d997e619e35375 /commands/memcmp.c | |
parent | 60aaeb8be019c75d86cd0aa9615d1ef470983418 (diff) | |
download | barebox-184d75a9dee979bf044649bff2854bc66172c9ff.tar.gz barebox-184d75a9dee979bf044649bff2854bc66172c9ff.tar.xz |
commands: Get rid of mem_rw_buf
There doesn't seem to be any good reason for all of the memory
commands (md, mw, etc.) to rely on a shared pre-allocated buffer
anymore. So, to simplify things, drop the shared buffer and adjust all
of the utilites to allocate needed memory.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/memcmp.c')
-rw-r--r-- | commands/memcmp.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/commands/memcmp.c b/commands/memcmp.c index 981c8cb38d..48957b4500 100644 --- a/commands/memcmp.c +++ b/commands/memcmp.c @@ -34,8 +34,6 @@ #include <linux/stat.h> #include <xfuncs.h> -extern char *mem_rw_buf; - static char *devmem = "/dev/mem"; static int do_memcmp(int argc, char *argv[]) @@ -45,7 +43,7 @@ static int do_memcmp(int argc, char *argv[]) char *sourcefile = devmem; char *destfile = devmem; int sourcefd, destfd; - char *rw_buf1; + char *buf, *source_data, *dest_data; int ret = 1; int offset = 0; struct stat statbuf; @@ -84,20 +82,22 @@ static int do_memcmp(int argc, char *argv[]) return 1; } - rw_buf1 = xmalloc(RW_BUF_SIZE); + buf = xmalloc(RW_BUF_SIZE + RW_BUF_SIZE); + source_data = buf; + dest_data = buf + RW_BUF_SIZE; while (count > 0) { int now, r1, r2, i; now = min((loff_t)RW_BUF_SIZE, count); - r1 = read_full(sourcefd, mem_rw_buf, now); + r1 = read_full(sourcefd, source_data, now); if (r1 < 0) { perror("read"); goto out; } - r2 = read_full(destfd, rw_buf1, now); + r2 = read_full(destfd, dest_data, now); if (r2 < 0) { perror("read"); goto out; @@ -109,7 +109,7 @@ static int do_memcmp(int argc, char *argv[]) } for (i = 0; i < now; i++) { - if (mem_rw_buf[i] != rw_buf1[i]) { + if (source_data[i] != dest_data[i]) { printf("files differ at offset %d\n", offset); goto out; } @@ -124,7 +124,7 @@ static int do_memcmp(int argc, char *argv[]) out: close(sourcefd); close(destfd); - free(rw_buf1); + free(buf); return ret; } |