Browse Source

Make testutils use utilfdt

The load_blob() and save_blob() functions are very similar to the utilfdt
versions. This removes the duplicated code.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
main
Simon Glass 13 years ago committed by Jon Loeliger
parent
commit
1c25c0d520
  1. 5
      tests/Makefile.tests
  2. 59
      tests/testutils.c

5
tests/Makefile.tests

@ -45,11 +45,12 @@ tests: $(TESTS) $(TESTS_TREES) @@ -45,11 +45,12 @@ tests: $(TESTS) $(TESTS_TREES)

$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)

$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o $(LIBFDT_archive)
$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
@$(VECHO) LD [libdl] $@
$(LINK.c) -o $@ $^ -ldl

$(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o $(LIBFDT_archive)
$(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o \
util.o $(LIBFDT_archive)

$(TESTS_PREFIX)dumptrees: $(TESTS_PREFIX)trees.o


59
tests/testutils.c

@ -159,33 +159,13 @@ int nodename_eq(const char *s1, const char *s2) @@ -159,33 +159,13 @@ int nodename_eq(const char *s1, const char *s2)

void *load_blob(const char *filename)
{
int fd;
int offset = 0;
int bufsize = 1024;
char *p = NULL;
int ret;

fd = open(filename, O_RDONLY);
if (fd < 0)
CONFIG("Couldn't open blob from \"%s\": %s", filename,
strerror(errno));

p = xmalloc(bufsize);
do {
if (offset == bufsize) {
bufsize *= 2;
p = xrealloc(p, bufsize);
}

ret = read(fd, &p[offset], bufsize - offset);
if (ret < 0)
CONFIG("Couldn't read from \"%s\": %s", filename,
strerror(errno));

offset += ret;
} while (ret != 0);
char *blob;
int ret = utilfdt_read_err(filename, &blob);

return p;
if (ret)
CONFIG("Couldn't open blob from \"%s\": %s", filename,
strerror(ret));
return blob;
}

void *load_blob_arg(int argc, char *argv[])
@ -197,28 +177,11 @@ void *load_blob_arg(int argc, char *argv[]) @@ -197,28 +177,11 @@ void *load_blob_arg(int argc, char *argv[])

void save_blob(const char *filename, void *fdt)
{
int fd;
int totalsize;
int offset;
char *p;
int ret;

fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0)
CONFIG("Couldn't open \"%s\" to write blob: %s", filename,
strerror(errno));

totalsize = fdt_totalsize(fdt);
offset = 0;
p = fdt;

while (offset < totalsize) {
ret = write(fd, p + offset, totalsize - offset);
if (ret < 0)
CONFIG("Couldn't write to \"%s\": %s", filename,
strerror(errno));
offset += ret;
}
int ret = utilfdt_write_err(filename, fdt);

if (ret)
CONFIG("Couldn't write blob to \"%s\": %s", filename,
strerror(ret));
}

void *open_blob_rw(void *blob)

Loading…
Cancel
Save