[Pdbg] [PATCH v4 09/30] libpdbg: Add a function to map real target to virtual
Alistair Popple
alistair at popple.id.au
Wed Oct 9 15:04:12 AEDT 2019
> > >
> > > Similar argument as above. Some virtual nodes may not have any
> > > linked
> > > real nodes. In that case, target_to_real() will return the same
> > > virtual target. (For example, "/proc0" is a virtual target without
> > > any
> > > real target linked to it.)
> > >
> >
> > So in these cases are we asserting that if we fail to map a node to
> > a
> > [virtual|real] node that it is still correct to continue on treating
> > the
> > original node as if it were of the requested type?
>
>
> Well the motivation behind target_to_real() and target_to_virtual() is
> adding convinience functions that help improve the readability of the
> traverse code where they are used. As I described they are not
> strictly converting to real/virtual targets, but if possible map it to
> the right target.
>
> I can add some comments for these functions if that would help.
Yeah, I think some comments pointing this out would be helpful as in six
months time at least I will have forgotten this when it comes time to use them
:-)
> >
> > > > Do you think it be would be worthwhile adding some asserts to
> > > > check
> > > > this or
> > > > does the probing code (which I'm yet to read) somehow guarantee
> > > > those
> > > > assertions are always correct?
> > >
> > > I think the tests which focus on the traverse will ensure the
> > > correctness of map functions. We don't specifically need testing
> > > for
> > > the lower level functions. Also, these functions are internal to
> > > libpdbg and I would have to jump through hoops to test them. :-
> > > ) But
> > > not impossible to add tests if you strongly feel about it.
> >
> > It wasn't so much for testing but rather to ensure we crash and burn
> > as early
> > as possible if something unexpected (ie. buggy) is observed. However
> > it seems
> > my original assertions were wrong anyway.
>
> I have added assertions where we expect a virtual target.
> >
> > - Alistair
> >
> > > > - Alistair
> > > >
> > > > On Thursday, 3 October 2019 2:18:48 PM AEDT Amitay Isaacs wrote:
> > > > > Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
> > > > > ---
> > > > > libpdbg/target.c | 8 ++++++++
> > > > > libpdbg/target.h | 1 +
> > > > > 2 files changed, 9 insertions(+)
> > > > >
> > > > > diff --git a/libpdbg/target.c b/libpdbg/target.c
> > > > > index 20f292f..f3d4db8 100644
> > > > > --- a/libpdbg/target.c
> > > > > +++ b/libpdbg/target.c
> > > > > @@ -481,3 +481,11 @@ struct pdbg_target *target_to_real(struct
> > > > > pdbg_target
> > > > *target)
> > > > >
> > > > > return target;
> > > > > }
> > > > > +
> > > > > +struct pdbg_target *target_to_virtual(struct pdbg_target
> > > > > *target)
> > > > > +{
> > > > > + if (target->compatible && target->vnode)
> > > > > + return target->vnode;
> > > > > +
> > > > > + return target;
> > > > > +}
> > > > > diff --git a/libpdbg/target.h b/libpdbg/target.h
> > > > > index 5d04117..8148f83 100644
> > > > > --- a/libpdbg/target.h
> > > > > +++ b/libpdbg/target.h
> > > > > @@ -66,5 +66,6 @@ const char *pdbg_get_backend_option(void);
> > > > > struct sbefifo *pib_to_sbefifo(struct pdbg_target *target);
> > > > > bool target_is_virtual(struct pdbg_target *target);
> > > > > struct pdbg_target *target_to_real(struct pdbg_target
> > > > > *target);
> > > > > +struct pdbg_target *target_to_virtual(struct pdbg_target
> > > > > *target);
> > > > >
> > > > > #endif
> > > > >
> > > >
> > > >
> > >
> > > Amitay.
> > >
> >
> >
> >
>
> Amitay.
>
More information about the Pdbg
mailing list