aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorOliver O'Halloran <oohall@gmail.com>2016-01-18 14:23:18 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-01-21 15:26:42 +1100
commit5d9b239fadc6c0bdf18e34a48a4b0ade956994e6 (patch)
tree8511e25b0e2e742b09e0758e6854e169cd2e176a /test
parentb35c7652ba04019e0c9ace0092369daab8177d1d (diff)
downloadskiboot-5d9b239fadc6c0bdf18e34a48a4b0ade956994e6.zip
skiboot-5d9b239fadc6c0bdf18e34a48a4b0ade956994e6.tar.gz
skiboot-5d9b239fadc6c0bdf18e34a48a4b0ade956994e6.tar.bz2
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.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);
+}
+