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

Amitay Isaacs amitay at ozlabs.org
Wed Oct 9 15:27:17 AEDT 2019


On Wed, 2019-10-09 at 15:20 +1100, Alistair Popple wrote:
> 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)
> > 
> 
> 
> 

pdbg -a probe on any of the palm machines would produce following output:

# pdbg -a probe
proc0:
    fsi0: Kernel based FSI master (*)
    pib0: POWER FSI2PIB (*)
        core9: POWER8 Core (*)
            thread0: POWER8 Thread (*)
            thread1: POWER8 Thread (*)
            thread2: POWER8 Thread (*)
            thread3: POWER8 Thread (*)
            thread4: POWER8 Thread (*)
            thread5: POWER8 Thread (*)
            thread6: POWER8 Thread (*)
            thread7: POWER8 Thread (*)
        core11: POWER8 Core (*)
            thread0: POWER8 Thread (*)
            thread1: POWER8 Thread (*)
            thread2: POWER8 Thread (*)
            thread3: POWER8 Thread (*)
            thread4: POWER8 Thread (*)
            thread5: POWER8 Thread (*)
            thread6: POWER8 Thread (*)
            thread7: POWER8 Thread (*)
        core12: POWER8 Core (*)
            thread0: POWER8 Thread (*)
            thread1: POWER8 Thread (*)
            thread2: POWER8 Thread (*)
            thread3: POWER8 Thread (*)
            thread4: POWER8 Thread (*)
            thread5: POWER8 Thread (*)
            thread6: POWER8 Thread (*)
            thread7: POWER8 Thread (*)
        core13: POWER8 Core (*)
            thread0: POWER8 Thread (*)
            thread1: POWER8 Thread (*)
            thread2: POWER8 Thread (*)
            thread3: POWER8 Thread (*)
            thread4: POWER8 Thread (*)
            thread5: POWER8 Thread (*)
            thread6: POWER8 Thread (*)
            thread7: POWER8 Thread (*)
proc1:


Since proc1 is virtual, it gets enabled and printed in the output.  This patch is to avoid priting proc1 in the probe output.

Amitay.
-- 

When an old person dies, a library is lost. - Tommy Swann



More information about the Pdbg mailing list