From: Li Liu <john.li...@huawei.com>

add the main function to analyse the parameter 'dumpdts' as a
filename the dts will be dumped to.

Signed-off-by: Li Liu <john.li...@huawei.com>
---
 device_tree.c                |   21 +++++++++++++++++++++
 include/sysemu/device_tree.h |    1 +
 2 files changed, 22 insertions(+)

diff --git a/device_tree.c b/device_tree.c
index 1e407d2..b9a924f 100644
--- a/device_tree.c
+++ b/device_tree.c
@@ -496,3 +496,24 @@ static void qemu_write_dts(FILE *fp, void *fdt)
         fprintf(fp, ";\n");
     }
 }
+
+void qemu_fdt_dumpdts(void *fdt)
+{
+    FILE *fp;
+    const char *filename = qemu_opt_get(qemu_get_machine_opts(), "dumpdts");
+
+    if (!filename || !fdt) {
+        return;
+    }
+
+    fp = fopen(filename, "w");
+    if (!fp) {
+        fprintf(stderr, "Failed to open file '%s'\n", filename);
+        goto ret;
+    }
+
+    qemu_write_dts(fp, fdt);
+
+ret:
+    fclose(fp);
+}
diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h
index 899f05c..27145fb 100644
--- a/include/sysemu/device_tree.h
+++ b/include/sysemu/device_tree.h
@@ -50,6 +50,7 @@ int qemu_fdt_add_subnode(void *fdt, const char *name);
     } while (0)
 
 void qemu_fdt_dumpdtb(void *fdt, int size);
+void qemu_fdt_dumpdts(void *fdt);
 
 /**
  * qemu_fdt_setprop_sized_cells_from_array:
-- 
1.7.9.5



Reply via email to