Messages in this thread | | | Date | Fri, 20 Oct 2017 00:01:08 +0900 | From | Namhyung Kim <> | Subject | Re: [PATCH v6 1/6] perf report: properly handle branch count in match_chain |
| |
Hi Andi,
On Thu, Oct 19, 2017 at 06:55:19AM -0700, Andi Kleen wrote: > On Thu, Oct 19, 2017 at 12:59:14PM +0200, Milian Wolff wrote: > > On Donnerstag, 19. Oktober 2017 00:41:04 CEST Andi Kleen wrote: > > > Milian Wolff <milian.wolff@kdab.com> writes: > > > > +static enum match_result match_address_dso(struct dso *left_dso, u64 > > > > left_ip, + struct dso *right_dso, u64 right_ip) > > > > +{ > > > > + if (left_dso == right_dso && left_ip == right_ip) > > > > + return MATCH_EQ; > > > > + else if (left_ip < right_ip) > > > > + return MATCH_LT; > > > > + else > > > > + return MATCH_GT; > > > > +} > > > > > > So why does only the first case check the dso? Does it not matter > > > for the others? > > > > > > Either should be checked by none or by all. > > > > I don't see why it should be checked. It is only required to prevent two > > addresses to be considered equal while they are not. So only the one check is > > required, otherwise we return either LT or GT. > > When the comparison is always in the same process (which I think > is not the case) just checking the addresses is sufficient. If they are not then you > always need to check the DSO and only compare inside the same DSO.
As far as I know, the node->ip is a relative address (inside a DSO). So it should compare the dso as well even in the same process.
Thanks, Namhyung
| |