[Pdbg] [PATCH v2 07/16] libpdbg: Remove unused code

Amitay Isaacs amitay at ozlabs.org
Wed Nov 7 17:13:19 AEDT 2018


There is missed deletion of dt_find_by_name() from device.h, but since
device.h gets removed eventually, not an issue.

Reviewed-by: Amitay Isaacs <amitay at ozlabs.org>

On Wed, 2018-11-07 at 16:39 +1100, Alistair Popple wrote:
> Much of the code in device.c was originally copied over from Skiboot
> and is not applicable or used by pdbg.
> 
> Signed-off-by: Alistair Popple <alistair at popple.id.au>
> ---
>  libpdbg/device.c  | 266 +-------------------------------------------
> ----------
>  libpdbg/device.h  |  89 ------------------
>  libpdbg/libpdbg.c |  27 ------
>  libpdbg/libpdbg.h |   1 -
>  4 files changed, 4 insertions(+), 379 deletions(-)
> 
> diff --git a/libpdbg/device.c b/libpdbg/device.c
> index 7442e29..cdb3481 100644
> --- a/libpdbg/device.c
> +++ b/libpdbg/device.c
> @@ -34,7 +34,6 @@
>  u32 last_phandle = 0;
>  
>  struct pdbg_target *dt_root;
> -struct pdbg_target *dt_chosen;
>  
>  static const char *take_name(const char *name)
>  {
> @@ -283,22 +282,6 @@ struct pdbg_target *dt_find_by_path(struct
> pdbg_target *root, const char *path)
>  	return root;
>  }
>  
> -struct pdbg_target *dt_find_by_name(struct pdbg_target *root, const
> char *name)
> -{
> -	struct pdbg_target *child, *match;
> -
> -	list_for_each(&root->children, child, list) {
> -		if (!strcmp(child->dn_name, name))
> -			return child;
> -
> -		match = dt_find_by_name(child, name);
> -		if (match)
> -			return match;
> -	}
> -
> -	return NULL;
> -}
> -
>  static struct dt_property *new_property(struct pdbg_target *node,
>  					const char *name, size_t size)
>  {
> @@ -363,107 +346,6 @@ void dt_resize_property(struct dt_property
> **prop, size_t len)
>  	(*prop)->list.prev->next = &(*prop)->list;
>  }
>  
> -struct dt_property *dt_add_property_string(struct pdbg_target *node,
> -					   const char *name,
> -					   const char *value)
> -{
> -	return dt_add_property(node, name, value, strlen(value)+1);
> -}
> -
> -struct dt_property *dt_add_property_nstr(struct pdbg_target *node,
> -					 const char *name,
> -					 const char *value, unsigned
> int vlen)
> -{
> -	struct dt_property *p;
> -	char *tmp = zalloc(vlen + 1);
> -
> -	if (!tmp)
> -		return NULL;
> -
> -	strncpy(tmp, value, vlen);
> -	p = dt_add_property(node, name, tmp, strlen(tmp)+1);
> -	free(tmp);
> -
> -	return p;
> -}
> -
> -struct dt_property *__dt_add_property_cells(struct pdbg_target
> *node,
> -					    const char *name,
> -					    int count, ...)
> -{
> -	struct dt_property *p;
> -	u32 *val;
> -	unsigned int i;
> -	va_list args;
> -
> -	p = new_property(node, name, count * sizeof(u32));
> -	val = (u32 *)p->prop;
> -	va_start(args, count);
> -	for (i = 0; i < count; i++)
> -		val[i] = cpu_to_fdt32(va_arg(args, u32));
> -	va_end(args);
> -	return p;
> -}
> -
> -struct dt_property *__dt_add_property_u64s(struct pdbg_target *node,
> -					   const char *name,
> -					   int count, ...)
> -{
> -	struct dt_property *p;
> -	u64 *val;
> -	unsigned int i;
> -	va_list args;
> -
> -	p = new_property(node, name, count * sizeof(u64));
> -	val = (u64 *)p->prop;
> -	va_start(args, count);
> -	for (i = 0; i < count; i++)
> -		val[i] = cpu_to_fdt64(va_arg(args, u64));
> -	va_end(args);
> -	return p;
> -}
> -
> -struct dt_property *__dt_add_property_strings(struct pdbg_target
> *node,
> -					      const char *name,
> -					      int count, ...)
> -{
> -	struct dt_property *p;
> -	unsigned int i, size;
> -	va_list args;
> -	const char *sstr;
> -	char *s;
> -
> -	va_start(args, count);
> -	for (i = size = 0; i < count; i++) {
> -		sstr = va_arg(args, const char *);
> -		if (sstr)
> -			size += strlen(sstr) + 1;
> -	}
> -	va_end(args);
> -	if (!size)
> -		size = 1;
> -	p = new_property(node, name, size);
> -	s = (char *)p->prop;
> -	*s = 0;
> -	va_start(args, count);
> -	for (i = 0; i < count; i++) {
> -		sstr = va_arg(args, const char *);
> -		if (sstr) {
> -			strcpy(s, sstr);
> -			s = s + strlen(sstr) + 1;
> -		}
> -	}
> -	va_end(args);
> -	return p;
> -}
> -
> -void dt_del_property(struct pdbg_target *node, struct dt_property
> *prop)
> -{
> -	list_del_from(&node->properties, &prop->list);
> -	free_name(prop->name);
> -	free(prop);
> -}
> -
>  u32 dt_property_get_cell(const struct dt_property *prop, u32 index)
>  {
>  	assert(prop->len >= (index+1)*sizeof(u32));
> @@ -497,16 +379,6 @@ struct pdbg_target *dt_next(const struct
> pdbg_target *root,
>  	return NULL;
>  }
>  
> -struct dt_property *__dt_find_property(struct pdbg_target *node,
> const char *name)
> -{
> -	struct dt_property *i;
> -
> -	list_for_each(&node->properties, i, list)
> -		if (strcmp(i->name, name) == 0)
> -			return i;
> -	return NULL;
> -}
> -
>  struct dt_property *dt_find_property(const struct pdbg_target *node,
>  					   const char *name)
>  {
> @@ -518,14 +390,6 @@ struct dt_property *dt_find_property(const
> struct pdbg_target *node,
>  	return NULL;
>  }
>  
> -void dt_check_del_prop(struct pdbg_target *node, const char *name)
> -{
> -	struct dt_property *p;
> -
> -	p = __dt_find_property(node, name);
> -	if (p)
> -		dt_del_property(node, p);
> -}
>  const struct dt_property *dt_require_property(const struct
> pdbg_target *node,
>  					      const char *name, int
> wanted_len)
>  {
> @@ -551,19 +415,6 @@ const struct dt_property
> *dt_require_property(const struct pdbg_target *node,
>  	return p;
>  }
>  
> -bool dt_has_node_property(const struct pdbg_target *node,
> -			  const char *name, const char *val)
> -{
> -	const struct dt_property *p = dt_find_property(node, name);
> -
> -	if (!p)
> -		return false;
> -	if (!val)
> -		return true;
> -
> -	return p->len == strlen(val) + 1 && memcmp(p->prop, val, p-
> >len) == 0;
> -}
> -
>  bool dt_prop_find_string(const struct dt_property *p, const char *s)
>  {
>  	const char *c, *end;
> @@ -601,25 +452,6 @@ struct pdbg_target
> *dt_find_compatible_node(struct pdbg_target *root,
>  	return NULL;
>  }
>  
> -u64 dt_prop_get_u64(const struct pdbg_target *node, const char
> *prop)
> -{
> -	const struct dt_property *p = dt_require_property(node, prop,
> 8);
> -
> -	return ((u64)dt_property_get_cell(p, 0) << 32)
> -		| dt_property_get_cell(p, 1);
> -}
> -
> -u64 dt_prop_get_u64_def(const struct pdbg_target *node, const char
> *prop, u64 def)
> -{
> -	const struct dt_property *p = dt_find_property(node, prop);
> -
> -	if (!p)
> -		return def;
> -
> -	return ((u64)dt_property_get_cell(p, 0) << 32)
> -		| dt_property_get_cell(p, 1);
> -}
> -
>  u32 dt_prop_get_u32(const struct pdbg_target *node, const char
> *prop)
>  {
>  	const struct dt_property *p = dt_require_property(node, prop,
> 4);
> @@ -629,12 +461,12 @@ u32 dt_prop_get_u32(const struct pdbg_target
> *node, const char *prop)
>  
>  u32 dt_prop_get_u32_def(const struct pdbg_target *node, const char
> *prop, u32 def)
>  {
> -	const struct dt_property *p = dt_find_property(node, prop);
> +        const struct dt_property *p = dt_find_property(node, prop);
>  
> -	if (!p)
> -		return def;
> +        if (!p)
> +                return def;
>  
> -	return dt_property_get_cell(p, 0);
> +        return dt_property_get_cell(p, 0);
>  }
>  
>  u32 dt_prop_get_u32_index(const struct pdbg_target *node, const char
> *prop, u32 index)
> @@ -659,17 +491,6 @@ const void *dt_prop_get_def(const struct
> pdbg_target *node, const char *prop,
>  	return p ? p->prop : def;
>  }
>  
> -const void *dt_prop_get_def_size(const struct pdbg_target *node,
> const char *prop,
> -				void *def, size_t *len)
> -{
> -	const struct dt_property *p = dt_find_property(node, prop);
> -	*len = 0;
> -	if (p)
> -		*len = p->len;
> -
> -	return p ? p->prop : def;
> -}
> -
>  u32 dt_prop_get_cell(const struct pdbg_target *node, const char
> *prop, u32 cell)
>  {
>  	const struct dt_property *p = dt_require_property(node, prop,
> -1);
> @@ -677,35 +498,6 @@ u32 dt_prop_get_cell(const struct pdbg_target
> *node, const char *prop, u32 cell)
>  	return dt_property_get_cell(p, cell);
>  }
>  
> -u32 dt_prop_get_cell_def(const struct pdbg_target *node, const char
> *prop,
> -			 u32 cell, u32 def)
> -{
> -	const struct dt_property *p = dt_find_property(node, prop);
> -
> -	if (!p)
> -		return def;
> -
> -	return dt_property_get_cell(p, cell);
> -}
> -
> -void dt_free(struct pdbg_target *node)
> -{
> -	struct pdbg_target *child;
> -	struct dt_property *p;
> -
> -	while ((child = list_top(&node->children, struct pdbg_target,
> list)))
> -		dt_free(child);
> -
> -	while ((p = list_pop(&node->properties, struct dt_property,
> list))) {
> -		free_name(p->name);
> -		free(p);
> -	}
> -
> -	if (node->parent)
> -		list_del_from(&node->parent->children, &node->list);
> -	dt_destroy(node);
> -}
> -
>  enum pdbg_target_status str_to_status(const char *status)
>  {
>  	if (!strcmp(status, "enabled")) {
> @@ -852,53 +644,3 @@ u32 dt_get_chip_id(const struct pdbg_target
> *node)
>  	assert(id != 0xffffffff);
>  	return id;
>  }
> -
> -struct pdbg_target *dt_find_compatible_node_on_chip(struct
> pdbg_target *root,
> -						struct pdbg_target
> *prev,
> -						const char *compat,
> -						uint32_t chip_id)
> -{
> -	struct pdbg_target *node;
> -
> -	node = prev ? dt_next(root, prev) : root;
> -	for (; node; node = dt_next(root, node)) {
> -		u32 cid = __dt_get_chip_id(node);
> -		if (cid == chip_id &&
> -		    dt_node_is_compatible(node, compat))
> -			return node;
> -	}
> -	return NULL;
> -}
> -
> -unsigned int dt_count_addresses(const struct pdbg_target *node)
> -{
> -	const struct dt_property *p;
> -	u32 na = dt_n_address_cells(node);
> -	u32 ns = dt_n_size_cells(node);
> -	u32 n;
> -
> -	p = dt_require_property(node, "reg", -1);
> -	n = (na + ns) * sizeof(u32);
> -
> -	if (n == 0)
> -		return 0;
> -
> -	return p->len / n;
> -}
> -
> -u64 dt_translate_address(const struct pdbg_target *node, unsigned
> int index,
> -			 u64 *out_size)
> -{
> -	/* XXX TODO */
> -	return dt_get_address(node, index, out_size);
> -}
> -
> -bool dt_node_is_enabled(struct pdbg_target *node)
> -{
> -	const struct dt_property *p = dt_find_property(node, "status");
> -
> -	if (!p)
> -		return true;
> -
> -	return p->len > 1 && p->prop[0] == 'o' && p->prop[1] == 'k';
> -}
> diff --git a/libpdbg/device.h b/libpdbg/device.h
> index cb5bc10..5786d99 100644
> --- a/libpdbg/device.h
> +++ b/libpdbg/device.h
> @@ -44,7 +44,6 @@ struct dt_property {
>  extern u32 last_phandle;
>  
>  extern struct pdbg_target *dt_root;
> -extern struct pdbg_target *dt_chosen;
>  
>  /* Create a new node. */
>  struct pdbg_target *dt_new_node(const char *name, const void *fdt,
> int offset);
> @@ -56,51 +55,6 @@ bool dt_attach_root(struct pdbg_target *parent,
> struct pdbg_target *root);
>  struct dt_property *dt_add_property(struct pdbg_target *node,
>  				    const char *name,
>  				    const void *val, size_t size);
> -struct dt_property *dt_add_property_string(struct pdbg_target *node,
> -					   const char *name,
> -					   const char *value);
> -struct dt_property *dt_add_property_nstr(struct pdbg_target *node,
> -					 const char *name,
> -					 const char *value, unsigned
> int vlen);
> -
> -/* Given out enough GCC extensions, we will achieve enlightenment!
> */
> -#define dt_add_property_strings(node, name, ...)			
> \
> -	__dt_add_property_strings((node), ((name)),			
> \
> -			    sizeof((const char *[]) { __VA_ARGS__
> })/sizeof(const char *), \
> -			    __VA_ARGS__)
> -
> -struct dt_property *__dt_add_property_strings(struct pdbg_target
> *node,
> -					      const char *name,
> -					      int count, ...);
> -
> -/* Given out enough GCC extensions, we will achieve enlightenment!
> */
> -#define dt_add_property_cells(node, name, ...)			
> 	\
> -	__dt_add_property_cells((node), ((name)),			\
> -			    sizeof((u32[]) { __VA_ARGS__
> })/sizeof(u32), \
> -			    __VA_ARGS__)
> -
> -struct dt_property *__dt_add_property_cells(struct pdbg_target
> *node,
> -					    const char *name,
> -					    int count, ...);
> -
> -#define dt_add_property_u64s(node, name, ...)			
> 	\
> -	__dt_add_property_u64s((node), ((name)),			\
> -			       sizeof((u64[]) { __VA_ARGS__
> })/sizeof(u64), \
> -			       __VA_ARGS__)
> -
> -struct dt_property *__dt_add_property_u64s(struct pdbg_target *node,
> -					   const char *name,
> -					   int count, ...);
> -
> -static inline struct dt_property *dt_add_property_u64(struct
> pdbg_target *node,
> -						      const char *name,
> u64 val)
> -{
> -	return dt_add_property_cells(node, name, (u32)(val >> 32),
> (u32)val);
> -}
> -
> -void dt_del_property(struct pdbg_target *node, struct dt_property
> *prop);
> -
> -void dt_check_del_prop(struct pdbg_target *node, const char *name);
>  
>  /* Warning: moves *prop! */
>  void dt_resize_property(struct dt_property **prop, size_t len);
> @@ -113,10 +67,6 @@ struct pdbg_target *dt_first(const struct
> pdbg_target *root);
>  /* Return next node, or NULL. */
>  struct pdbg_target *dt_next(const struct pdbg_target *root, const
> struct pdbg_target *prev);
>  
> -/* Iterate nodes */
> -#define dt_for_each_node(root, node) \
> -	for (node = dt_first(root); node; node = dt_next(root, node))
> -
>  #define dt_for_each_child(parent, node) \
>  	list_for_each(&parent->children, node, list)
>  
> @@ -135,18 +85,6 @@ struct pdbg_target
> *dt_find_compatible_node(struct pdbg_target *root,
>  	for (node = NULL; 			        \
>  	     (node = dt_find_compatible_node(root, node, compat)) !=
> NULL;)
>  
> -struct pdbg_target *dt_find_compatible_node_on_chip(struct
> pdbg_target *root,
> -						struct pdbg_target
> *prev,
> -						const char *compat,
> -						uint32_t chip_id);
> -
> -#define dt_for_each_compatible_on_chip(root, node, compat, chip_id)	
> \
> -	for (node = NULL; 			        \
> -	     (node = dt_find_compatible_node_on_chip(root, node,\
> -						     compat, chip_id))
> != NULL;)
> -/* Check status property */
> -bool dt_node_is_enabled(struct pdbg_target *node);
> -
>  /* Build the full path for a node. Return a new block of memory,
> caller
>   * shall free() it
>   */
> @@ -164,33 +102,18 @@ struct dt_property *dt_find_property(const
> struct pdbg_target *node,\
>  const struct dt_property *dt_require_property(const struct
> pdbg_target *node,
>  					      const char *name, int
> wanted_len);
>  
> -/* non-const variant */
> -struct dt_property *__dt_find_property(struct pdbg_target *node,
> const char *name);
> -
> -/* Find a property by name, check if it's the same as val. */
> -bool dt_has_node_property(const struct pdbg_target *node,
> -			  const char *name, const char *val);
> -
> -/* Free a node (and any children). */
> -void dt_free(struct pdbg_target *node);
> -
>  /* Parse an initial fdt */
>  void dt_expand(const void *fdt);
>  int dt_expand_node(struct pdbg_target *node, const void *fdt, int
> fdt_node) __warn_unused_result;
>  
>  /* Simplified accessors */
> -u64 dt_prop_get_u64(const struct pdbg_target *node, const char
> *prop);
> -u64 dt_prop_get_u64_def(const struct pdbg_target *node, const char
> *prop, u64 def);
>  u32 dt_prop_get_u32(const struct pdbg_target *node, const char
> *prop);
>  u32 dt_prop_get_u32_def(const struct pdbg_target *node, const char
> *prop, u32 def);
>  u32 dt_prop_get_u32_index(const struct pdbg_target *node, const char
> *prop, u32 index);
>  const void *dt_prop_get(const struct pdbg_target *node, const char
> *prop);
>  const void *dt_prop_get_def(const struct pdbg_target *node, const
> char *prop,
>  			    void *def);
> -const void *dt_prop_get_def_size(const struct pdbg_target *node,
> const char *prop,
> -				void *def, size_t *len);
>  u32 dt_prop_get_cell(const struct pdbg_target *node, const char
> *prop, u32 cell);
> -u32 dt_prop_get_cell_def(const struct pdbg_target *node, const char
> *prop, u32 cell, u32 def);
>  
>  /* Parsing helpers */
>  u32 dt_n_address_cells(const struct pdbg_target *node);
> @@ -208,18 +131,6 @@ u32 dt_get_chip_id(const struct pdbg_target
> *node);
>  u64 dt_get_address(const struct pdbg_target *node, unsigned int
> index,
>  		   u64 *out_size);
>  
> -/* Count "reg" property entries */
> -unsigned int dt_count_addresses(const struct pdbg_target *node);
> -
> -/* Address translation
> - *
> - * WARNING: Current implementation is simplified and will not
> - * handle complex address formats with address space indicators
> - * nor will it handle "ranges" translations yet... (XX TODO)
> - */
> -u64 dt_translate_address(const struct pdbg_target *node, unsigned
> int index,
> -			 u64 *out_size);
> -
>  /* compare function used to sort child nodes by name when added to
> the
>   * tree. This is mainly here for testing.
>   */
> diff --git a/libpdbg/libpdbg.c b/libpdbg/libpdbg.c
> index f77138a..7712e87 100644
> --- a/libpdbg/libpdbg.c
> +++ b/libpdbg/libpdbg.c
> @@ -184,21 +184,6 @@ uint64_t pdbg_get_address(struct pdbg_target
> *target, uint64_t *size)
>  	return dt_get_address(target, 0, size);
>  }
>  
> -/* Difference from below is that it doesn't search up the tree for
> the given
> - * property. As nothing uses this yet we don't export it for use,
> but we may in
> - * future */
> -static int pdbg_get_target_u64_property(struct pdbg_target *target,
> const char *name, uint64_t *val)
> -{
> -	struct dt_property *p;
> -
> -	p = dt_find_property(target, name);
> -	if (!p)
> -		return -1;
> -
> -	*val = dt_get_number(p->prop, 2);
> -	return 0;
> -}
> -
>  int pdbg_get_target_u32_property(struct pdbg_target *target, const
> char *name, uint32_t *val)
>  {
>  	struct dt_property *p;
> @@ -211,18 +196,6 @@ int pdbg_get_target_u32_property(struct
> pdbg_target *target, const char *name, u
>  	return 0;
>  }
>  
> -int pdbg_get_u64_property(struct pdbg_target *target, const char
> *name, uint64_t *val)
> -{
> -	struct pdbg_target *dn;
> -
> -	for (dn = target; dn; dn = dn->parent) {
> -		if (!pdbg_get_target_u64_property(dn, name, val))
> -			return 0;
> -	}
> -
> -	return -1;
> -}
> -
>  void pdbg_progress_tick(uint64_t cur, uint64_t end)
>  {
>  	if (progress_tick)
> diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h
> index b11866a..959c2ef 100644
> --- a/libpdbg/libpdbg.h
> +++ b/libpdbg/libpdbg.h
> @@ -73,7 +73,6 @@ void pdbg_set_target_property(struct pdbg_target
> *target, const char *name, cons
>  /* Get the given property and return the size */
>  void *pdbg_get_target_property(struct pdbg_target *target, const
> char *name, size_t *size);
>  int pdbg_get_target_u32_property(struct pdbg_target *target, const
> char *name, uint32_t *val);
> -int pdbg_get_u64_property(struct pdbg_target *target, const char
> *name, uint64_t *val);
>  uint64_t pdbg_get_address(struct pdbg_target *target, uint64_t
> *size);
>  
>  /* Misc. */
> -- 
> 2.11.0
> 

Amitay.
-- 

To travel hopefully is better than to arrive. - Sir James Jeans



More information about the Pdbg mailing list