[Pdbg] [PATCH 01/13] libpdbg: Cache device tree pointer and offset for each node

Alistair Popple alistair at popple.id.au
Thu Jan 16 12:23:55 AEDT 2020


Global variables for the win? ;-)

Reviewed-by: Alistair Popple <alistair at popple.id.au>

On Wednesday, 15 January 2020 4:18:49 PM AEDT Amitay Isaacs wrote:
> Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
> ---
>  libpdbg/device.c | 9 ++++++---
>  libpdbg/target.h | 2 ++
>  2 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/libpdbg/device.c b/libpdbg/device.c
> index ad498dc..ac2351d 100644
> --- a/libpdbg/device.c
> +++ b/libpdbg/device.c
> @@ -115,7 +115,7 @@ static struct pdbg_target *dt_pdbg_target_new(const void
> *fdt, int node_offset) return target;
>  }
> 
> -static struct pdbg_target *dt_new_node(const char *name, const void *fdt,
> int node_offset) +static struct pdbg_target *dt_new_node(const char *name,
> void *fdt, int node_offset) {
>  	struct pdbg_target *node = NULL;
>  	size_t size = sizeof(*node);
> @@ -131,6 +131,9 @@ static struct pdbg_target *dt_new_node(const char *name,
> const void *fdt, int no abort();
>  	}
> 
> +	node->fdt = fdt;
> +	node->fdt_offset = fdt ? node_offset : -1;
> +
>  	node->dn_name = take_name(name);
>  	node->parent = NULL;
>  	list_head_init(&node->properties);
> @@ -547,7 +550,7 @@ static enum pdbg_target_status str_to_status(const char
> *status) assert(0);
>  }
> 
> -static int dt_expand_node(struct pdbg_target *node, const void *fdt, int
> fdt_node) +static int dt_expand_node(struct pdbg_target *node, void *fdt,
> int fdt_node) {
>  	const struct fdt_property *prop;
>  	int offset, nextoffset, err;
> @@ -604,7 +607,7 @@ static int dt_expand_node(struct pdbg_target *node,
> const void *fdt, int fdt_nod return nextoffset;
>  }
> 
> -static void dt_expand(struct pdbg_target *root, const void *fdt)
> +static void dt_expand(struct pdbg_target *root, void *fdt)
>  {
>  	PR_DEBUG("FDT: Parsing fdt @%p\n", fdt);
> 
> diff --git a/libpdbg/target.h b/libpdbg/target.h
> index a8f777d..9e25a43 100644
> --- a/libpdbg/target.h
> +++ b/libpdbg/target.h
> @@ -39,6 +39,8 @@ struct pdbg_target {
>  	int (*probe)(struct pdbg_target *target);
>  	void (*release)(struct pdbg_target *target);
>  	uint64_t (*translate)(struct pdbg_target *target, uint64_t addr);
> +	void *fdt;
> +	int fdt_offset;
>  	int index;
>  	enum pdbg_target_status status;
>  	const char *dn_name;






More information about the Pdbg mailing list