From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752694AbcAGLSQ (ORCPT ); Thu, 7 Jan 2016 06:18:16 -0500 Received: from mail-pa0-f48.google.com ([209.85.220.48]:33428 "EHLO mail-pa0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750809AbcAGLSL (ORCPT ); Thu, 7 Jan 2016 06:18:11 -0500 Date: Thu, 7 Jan 2016 20:17:17 +0900 From: Namhyung Kim To: Jiri Olsa Cc: Arnaldo Carvalho de Melo , lkml , David Ahern , Ingo Molnar , Peter Zijlstra , Noel Grandin , Adrian Hunter Subject: Re: [PATCH 11/13] perf tools: Add overhead/overhead_children keys defaults via string Message-ID: <20160107111717.GG5499@danjae.kornet> References: <1452158050-28061-1-git-send-email-jolsa@kernel.org> <1452158050-28061-12-git-send-email-jolsa@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1452158050-28061-12-git-send-email-jolsa@kernel.org> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 07, 2016 at 10:14:08AM +0100, Jiri Olsa wrote: > We currently set 'overhead' and 'overhead_children' > as default sort keys within perf_hpp__init function > by directly adding into the sort list. > > This patch adds 'overhead' and 'overhead_children' > in text form into sort_keys and let them be added > by standard sort dimension interface. > > We need to eliminate dirrect sort_list additions to > b able to add support for hists specific sort keys. > > Link: http://lkml.kernel.org/n/tip-thk6jds1pi6j2jy82ywnxniy@git.kernel.org > Signed-off-by: Jiri Olsa Acked-by: Namhyung Kim Thanks, Namhyung > --- > tools/perf/ui/hist.c | 12 ------------ > tools/perf/util/sort.c | 39 +++++++++++++++++++++++++++++++++++++++ > 2 files changed, 39 insertions(+), 12 deletions(-) > > diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c > index 8263c0eb9fb5..bf2a66e254ea 100644 > --- a/tools/perf/ui/hist.c > +++ b/tools/perf/ui/hist.c > @@ -443,7 +443,6 @@ LIST_HEAD(perf_hpp__sort_list); > > void perf_hpp__init(void) > { > - struct list_head *list; > int i; > > for (i = 0; i < PERF_HPP__MAX_INDEX; i++) { > @@ -484,17 +483,6 @@ void perf_hpp__init(void) > > if (symbol_conf.show_total_period) > hpp_dimension__add_output(PERF_HPP__PERIOD); > - > - /* prepend overhead field for backward compatiblity. */ > - list = &perf_hpp__format[PERF_HPP__OVERHEAD].sort_list; > - if (list_empty(list)) > - list_add(list, &perf_hpp__sort_list); > - > - if (symbol_conf.cumulate_callchain) { > - list = &perf_hpp__format[PERF_HPP__OVERHEAD_ACC].sort_list; > - if (list_empty(list)) > - list_add(list, &perf_hpp__sort_list); > - } > } > > void perf_hpp__column_register(struct perf_hpp_fmt *format) > diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c > index 04e2a5cb19e3..ec722346e6ff 100644 > --- a/tools/perf/util/sort.c > +++ b/tools/perf/util/sort.c > @@ -2252,6 +2252,34 @@ static int setup_sort_order(struct perf_evlist *evlist) > return 0; > } > > +/* > + * Adds 'pre,' prefix into 'str' is 'pre' is > + * not already part of 'str'. > + */ > +static char *prefix_if_not_in(const char *pre, char *str) > +{ > + char *n; > + > + if (!str || strstr(str, pre)) > + return str; > + > + if (asprintf(&n, "%s,%s", pre, str) < 0) > + return NULL; > + > + free(str); > + return n; > +} > + > +static char *setup_overhead(char *keys) > +{ > + keys = prefix_if_not_in("overhead", keys); > + > + if (symbol_conf.cumulate_callchain) > + keys = prefix_if_not_in("overhead_children", keys); > + > + return keys; > +} > + > static int __setup_sorting(struct perf_evlist *evlist) > { > char *tmp, *tok, *str; > @@ -2281,6 +2309,17 @@ static int __setup_sorting(struct perf_evlist *evlist) > return -ENOMEM; > } > > + /* > + * Prepend overhead fields for backward compatibility. > + */ > + if (!is_strict_order(field_order)) { > + str = setup_overhead(str); > + if (str == NULL) { > + error("Not enough memory to setup overhead keys"); > + return -ENOMEM; > + } > + } > + > for (tok = strtok_r(str, ", ", &tmp); > tok; tok = strtok_r(NULL, ", ", &tmp)) { > ret = sort_dimension__add(tok, evlist); > -- > 2.4.3 >