[Pdbg] [PATCH v4 18/30] main: Avoid printing top level "proc" if no child is enabled

Alistair Popple alistair at popple.id.au
Wed Oct 9 15:20:58 AEDT 2019


On Thursday, 3 October 2019 2:18:57 PM AEDT Amitay Isaacs wrote:
> Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
> ---
>  src/main.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/src/main.c b/src/main.c
> index f7f891a..09c236e 100644
> --- a/src/main.c
> +++ b/src/main.c
> @@ -513,6 +513,21 @@ static bool parse_options(int argc, char *argv[])
>  	return true;
>  }
>  
> +static bool child_enabled(struct pdbg_target *target)
> +{
> +	struct pdbg_target *child;
> +
> +	pdbg_for_each_child_target(target, child) {
> +		if (child_enabled(child))
> +			return true;

We shouldn't have to re-curse down the tree here. If a child target is enabled 
it's parent must also be enabled. Unless this series has changed something 
here?

> +		if (pdbg_target_status(child) == PDBG_TARGET_ENABLED)
> +			return true;
> +	}
> +
> +	return false;
> +}
> +
>  static void print_target(struct pdbg_target *target, int level)
>  {
>  	int i;
> @@ -520,6 +535,9 @@ static void print_target(struct pdbg_target *target, int 
level)
>  	enum pdbg_target_status status;
>  	const char *classname;
>  
> +	if (level == 0 && !child_enabled(target))

I must have missed something as I don't understand why this is necessary. The 
top level target should only be enabled if explicitly selected on the command 
line or if any of it's children are enabled so in either case it should be 
printed.

- Alistair

> +		return;
> +
>  	/* Does this target actually exist? */
>  	status = pdbg_target_status(target);
>  	if (status != PDBG_TARGET_ENABLED)
> 






More information about the Pdbg mailing list