[Pdbg] [PATCH 07/13] libpdbg: Do not store properties in linked list
Amitay Isaacs
amitay at ozlabs.org
Wed Jan 15 16:18:55 AEDT 2020
... instead the properties will be accessed directly from the device
tree.
dt_add_property(), in addition to adding properties to a linked list,
assigned value to phandle if defined in device tree. So change the name
of the function to reflect the functionality.
Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
---
libpdbg/device.c | 54 +++---------------------------------------------
1 file changed, 3 insertions(+), 51 deletions(-)
diff --git a/libpdbg/device.c b/libpdbg/device.c
index 91ad258..c5fdc4e 100644
--- a/libpdbg/device.c
+++ b/libpdbg/device.c
@@ -331,40 +331,9 @@ static struct dt_property *dt_find_property(const struct pdbg_target *node,
return NULL;
}
-static struct dt_property *new_property(struct pdbg_target *node,
- const char *name, size_t size)
+static void dt_add_phandle(struct pdbg_target *node, const char *name,
+ const void *val, size_t size)
{
- struct dt_property *p = malloc(sizeof(*p) + size);
- char *path;
-
- if (!p) {
- path = dt_get_path(node);
- prerror("Failed to allocate property \"%s\" for %s of %zu bytes\n",
- name, path, size);
- free(path);
- abort();
- }
- if (dt_find_property(node, name)) {
- path = dt_get_path(node);
- prerror("Duplicate property \"%s\" in node %s\n",
- name, path);
- free(path);
- abort();
-
- }
-
- p->name = take_name(name);
- p->len = size;
- list_add_tail(&node->properties, &p->list);
- return p;
-}
-
-static struct dt_property *dt_add_property(struct pdbg_target *node,
- const char *name,
- const void *val, size_t size)
-{
- struct dt_property *p;
-
/*
* Filter out phandle properties, we re-generate them
* when flattening
@@ -375,13 +344,7 @@ static struct dt_property *dt_add_property(struct pdbg_target *node,
node->phandle = *(const u32 *)val;
if (node->phandle >= last_phandle)
last_phandle = node->phandle;
- return NULL;
}
-
- p = new_property(node, name, size);
- if (size)
- memcpy(p->prop, val, size);
- return p;
}
bool pdbg_target_set_property(struct pdbg_target *target, const char *name, const void *val, size_t size)
@@ -573,7 +536,7 @@ static int dt_expand_node(struct pdbg_target *node, void *fdt, int fdt_node)
if (strcmp("status", name) == 0)
node->status = str_to_status(prop->data);
- dt_add_property(node, name, prop->data,
+ dt_add_phandle(node, name, prop->data,
fdt32_to_cpu(prop->len));
break;
case FDT_BEGIN_NODE:
@@ -684,19 +647,8 @@ static struct pdbg_target *dt_new_virtual(struct pdbg_target *root, const char *
static void dt_link_virtual(struct pdbg_target *node, struct pdbg_target *vnode)
{
- struct dt_property *prop = NULL, *next;
-
node->vnode = vnode;
vnode->vnode = node;
-
- /* Move any properties on virtual node to real node */
- list_for_each_safe(&vnode->properties, prop, next, list) {
- if (!strcmp(prop->name, "#address-cells") || !strcmp(prop->name, "#size-cells"))
- continue;
-
- list_del(&prop->list);
- list_add_tail(&node->properties, &prop->list);
- }
}
static void pdbg_targets_init_virtual(struct pdbg_target *node, struct pdbg_target *root)
--
2.21.1
More information about the Pdbg
mailing list