[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RESEND RFC 4/6] device_tree: introduce qemu_fdt_getprop_op
From: |
Eric Auger |
Subject: |
[Qemu-devel] [RESEND RFC 4/6] device_tree: introduce qemu_fdt_getprop_optional |
Date: |
Thu, 19 Nov 2015 15:22:06 +0000 |
Current qemu_fdt_getprop exits if the property is not found. It is
sometimes needed to read an optional property, in which case we do
not wish to exit but simply returns a null value.
This is what this new qemu_fdt_getprop_optional function does.
Signed-off-by: Eric Auger <address@hidden>
---
device_tree.c | 17 +++++++++++++++++
include/sysemu/device_tree.h | 2 ++
2 files changed, 19 insertions(+)
diff --git a/device_tree.c b/device_tree.c
index f184e3c..a318683 100644
--- a/device_tree.c
+++ b/device_tree.c
@@ -280,6 +280,23 @@ const void *qemu_fdt_getprop(void *fdt, const char
*node_path,
return r;
}
+const void *qemu_fdt_getprop_optional(void *fdt, const char *node_path,
+ const char *property, bool optional, int *lenp)
+{
+ int len;
+ const void *r;
+ if (!lenp) {
+ lenp = &len;
+ }
+ r = fdt_getprop(fdt, findnode_nofail(fdt, node_path), property, lenp);
+ if (!r && !optional) {
+ error_report("%s: Couldn't get %s/%s: %s", __func__,
+ node_path, property, fdt_strerror(*lenp));
+ exit(1);
+ }
+ return r;
+}
+
uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path,
const char *property)
{
diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h
index f9e6e6e..10cbe8e 100644
--- a/include/sysemu/device_tree.h
+++ b/include/sysemu/device_tree.h
@@ -34,6 +34,8 @@ int qemu_fdt_setprop_phandle(void *fdt, const char *node_path,
const char *target_node_path);
const void *qemu_fdt_getprop(void *fdt, const char *node_path,
const char *property, int *lenp);
+const void *qemu_fdt_getprop_optional(void *fdt, const char *node_path,
+ const char *property, bool optional, int *lenp);
uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path,
const char *property);
uint32_t qemu_fdt_get_phandle(void *fdt, const char *path);
--
1.8.3.2
- [Qemu-devel] [RESEND RFC 0/6] AMD XGBE KVM platform passthrough, Eric Auger, 2015/11/19
- [Qemu-devel] [RESEND RFC 2/6] device_tree: introduce load_device_tree_from_sysfs, Eric Auger, 2015/11/19
- [Qemu-devel] [RESEND RFC 3/6] device_tree: introduce qemu_fdt_node_path, Eric Auger, 2015/11/19
- [Qemu-devel] [RESEND RFC 4/6] device_tree: introduce qemu_fdt_getprop_optional,
Eric Auger <=
- [Qemu-devel] [RESEND RFC 5/6] hw/arm/sysbus-fdt: helpers for clock node generation, Eric Auger, 2015/11/19
- [Qemu-devel] [RESEND RFC 1/6] hw/vfio/platform: amd-xgbe device, Eric Auger, 2015/11/19
- [Qemu-devel] [RESEND RFC 6/6] hw/arm/sysbus-fdt: enable amd-xgbe dynamic instantiation, Eric Auger, 2015/11/19
- Re: [Qemu-devel] [RESEND RFC 0/6] AMD XGBE KVM platform passthrough, Alex Williamson, 2015/11/19