aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2016-01-21 15:27:44 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-01-21 15:27:44 +1100
commitab6892b8bfce23eb3c6751fbf9e9d9a2e4c22ee3 (patch)
tree962c2350e5ac96b94153f40303df8ef3f3c94cb3 /test
parent33e3b5d3ce7d69272c22ae269b7f341dfd79be14 (diff)
parent5d9b239fadc6c0bdf18e34a48a4b0ade956994e6 (diff)
downloadskiboot-ab6892b8bfce23eb3c6751fbf9e9d9a2e4c22ee3.zip
skiboot-ab6892b8bfce23eb3c6751fbf9e9d9a2e4c22ee3.tar.gz
skiboot-ab6892b8bfce23eb3c6751fbf9e9d9a2e4c22ee3.tar.bz2
Merge branch 'stable'
Merge device tree sorting
Diffstat (limited to 'test')
-rw-r--r--test/dt_common.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/dt_common.c b/test/dt_common.c
new file mode 100644
index 0000000..7622081
--- /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);
+}
+