[Pdbg] [PATCH 03/10] libpdbg/target: add a release operation

Alistair Popple alistair at popple.id.au
Tue May 8 12:12:54 AEST 2018


> diff --git a/libpdbg/target.c b/libpdbg/target.c
> index 704d7d5..bf5fb08 100644
> --- a/libpdbg/target.c
> +++ b/libpdbg/target.c
> @@ -285,6 +285,9 @@ enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target)
>  	assert(target);
>  
>  	status = pdbg_target_status(target);
> +	assert(status != PDBG_TARGET_RELEASED);
> +	assert(status != PDBG_TARGET_PENDING_RELEASE);

Is there any reason we couldn't just reprobe targets that are in this state?

> diff --git a/libpdbg/target.h b/libpdbg/target.h
> index eba26cb..a33e089 100644
> --- a/libpdbg/target.h
> +++ b/libpdbg/target.h
> @@ -44,6 +44,7 @@ struct pdbg_target {
>  	char *compatible;
>  	char *class;
>  	int (*probe)(struct pdbg_target *target);
> +	void (*release)(struct pdbg_target *target);
>  	int index;
>  	enum pdbg_target_status status;
>  	const char *dn_name;
> @@ -64,9 +65,14 @@ struct pdbg_target_class *get_target_class(const char *name);
>  bool pdbg_target_is_class(struct pdbg_target *target, const char *class);
>  
>  extern struct list_head empty_list;
> +extern struct list_head target_classes;
> +
>  #define for_each_class_target(class_name, target)			\
>  	list_for_each((find_target_class(class_name) ? &require_target_class(class_name)->targets : &empty_list), target, class_link)
>  
> +#define for_each_target_class(target_class)			\
> +	list_for_each(&target_classes, target_class, class_head_link)
> +

What is this used for? I guess it's meant to iterate over every class?

- Alistair

>  struct hw_unit_info {
>  	void *hw_unit;
>  	size_t size;
> 




More information about the Pdbg mailing list