[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