Messages in this thread | | | Date | Wed, 11 Dec 2019 13:14:53 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH v2 1/3] perf report: Change sort order by a specified event in group |
| |
On Wed, Dec 11, 2019 at 08:01:44PM +0800, Jin, Yao wrote: > > > On 12/11/2019 7:38 PM, Jiri Olsa wrote: > > On Wed, Dec 11, 2019 at 03:30:34PM +0800, Jin Yao wrote: > > > > SNIP > > > > > + > > > +static int __hpp__group_sort_idx(struct hist_entry *a, struct hist_entry *b, > > > + hpp_field_fn get_field, int idx) > > > +{ > > > + struct evsel *evsel = hists_to_evsel(a->hists); > > > + u64 *fields_a, *fields_b; > > > + int cmp, nr_members, ret, i; > > > + > > > + cmp = field_cmp(get_field(a), get_field(b)); > > > + if (!perf_evsel__is_group_event(evsel)) > > > + return cmp; > > > + > > > + nr_members = evsel->core.nr_members; > > > + ret = pair_fields_alloc(a, b, get_field, nr_members, > > > + &fields_a, &fields_b); > > > + if (ret) { > > > + ret = cmp; > > > + goto out; > > > + } > > > + > > > + for (i = 1; i < nr_members; i++) { > > > + if (i == idx) { > > > + ret = field_cmp(fields_a[i], fields_b[i]); > > > + if (ret) > > > + goto out; > > > + } > > > + } > > > + > > > + if (cmp) { > > > + ret = cmp; > > > + goto out; > > > + } > > > + > > > + for (i = 1; i < nr_members; i++) { > > > + if (i != idx) { > > > + ret = field_cmp(fields_a[i], fields_b[i]); > > > + if (ret) > > > + goto out; > > > + } > > > > hi, > > I'm missing why we compare the fields for 2nd time in here > > > > thanks, > > jirka > > > > Hi, > > I think we may continue comparing the remaining of fields if the index field > is equal. :)
aah, I missed it's actualy == used in the first one ;-)
why don't you just call it directly?
ret = field_cmp(fields_a[idx], fields_b[idx]) if (ret) goto out;
jirka
| |