diff options
author | Oliver O'Halloran <oohall@gmail.com> | 2016-01-18 14:23:18 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-01-21 15:26:42 +1100 |
commit | 5d9b239fadc6c0bdf18e34a48a4b0ade956994e6 (patch) | |
tree | 8511e25b0e2e742b09e0758e6854e169cd2e176a /test | |
parent | b35c7652ba04019e0c9ace0092369daab8177d1d (diff) | |
download | talos-skiboot-5d9b239fadc6c0bdf18e34a48a4b0ade956994e6.tar.gz talos-skiboot-5d9b239fadc6c0bdf18e34a48a4b0ade956994e6.zip |
DT sorting test
Moved the dt_dump() into test/dt_common.c so that it can be shared
between hdata/test/hdata_to_dt.c and core/test/run-device.c
run-device.c contains two tests, one basic sorting test and a
generate-and-sort test.
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
[stewart@linux.vnet.ibm.com: remove trailing whitespace]
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/dt_common.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/test/dt_common.c b/test/dt_common.c new file mode 100644 index 00000000..76220812 --- /dev/null +++ b/test/dt_common.c @@ -0,0 +1,70 @@ +/* Copyright 2015 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <skiboot.h> +#include <stdlib.h> + +#include "../include/device.h" + +/* dump_dt() is used in hdata/test/hdata_to_dt.c and core/test/run-device.c + * this file is directly #included in both + */ + +static void indent_num(unsigned indent) +{ + unsigned int i; + + for (i = 0; i < indent; i++) + putc(' ', stdout); +} + +static void dump_val(unsigned indent, const void *prop, size_t size) +{ + size_t i; + int width = 78 - indent; + + for (i = 0; i < size; i++) { + printf("%02x", ((unsigned char *)prop)[i]); + width -= 2; + if(width < 2) { + printf("\n"); + indent_num(indent); + width = 80 - indent; + } + } +} + +static void dump_dt(const struct dt_node *root, unsigned indent, bool show_props) +{ + const struct dt_node *i; + const struct dt_property *p; + + indent_num(indent); + printf("node: %s\n", root->name); + + if (show_props) { + list_for_each(&root->properties, p, list) { + indent_num(indent); + printf("prop: %s size: %zu val: ", p->name, p->len); + dump_val(indent, p->prop, p->len); + printf("\n"); + } + } + + list_for_each(&root->children, i, list) + dump_dt(i, indent + 2, show_props); +} + |