From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752720AbcBURjN (ORCPT ); Sun, 21 Feb 2016 12:39:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47405 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751751AbcBURjJ (ORCPT ); Sun, 21 Feb 2016 12:39:09 -0500 Date: Sun, 21 Feb 2016 18:39:04 +0100 From: Jiri Olsa To: Namhyung Kim Cc: Arnaldo Carvalho de Melo , Ingo Molnar , Peter Zijlstra , Jiri Olsa , LKML , David Ahern , Andi Kleen Subject: Re: [PATCH 3/5] perf tools: Update srcline/file if needed Message-ID: <20160221173904.GH10701@krava.homerouter.cpe> References: <1456064558-13086-1-git-send-email-namhyung@kernel.org> <1456064558-13086-3-git-send-email-namhyung@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1456064558-13086-3-git-send-email-namhyung@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 Sun, Feb 21, 2016 at 11:22:36PM +0900, Namhyung Kim wrote: > Normally the hist entry's srcline and/or srcfile is set during sorting. > However sometime it's possible to a hist entry's srcline is not set yet > after the sorting. This is because the entry is so unique and other > sort keys already make it distinct. Then the srcline/file sort didn't > have a chance to be called during the sorting. In that case it has NULL > srcline/srcfile field and shows nothing. > > Before: > > $ perf report -s comm,sym,srcline > ... > Overhead Command Symbol > ----------------------------------------------------------------- > 34.42% swapper [k] intel_idle intel_idle.c:0 > 2.44% perf [.] __poll_nocancel (null) > 1.70% gnome-shell [k] fw_domains_get (null) > 1.04% Xorg [k] sock_poll (null) > > After: > > 34.42% swapper [k] intel_idle intel_idle.c:0 > 2.44% perf [.] __poll_nocancel .:0 > 1.70% gnome-shell [k] fw_domains_get fw_domains_get+42 > 1.04% Xorg [k] sock_poll socket.c:0 > > Signed-off-by: Namhyung Kim > --- > tools/perf/util/sort.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c > index 7daea71691df..6808d73164b5 100644 > --- a/tools/perf/util/sort.c > +++ b/tools/perf/util/sort.c > @@ -315,6 +315,16 @@ sort__srcline_cmp(struct hist_entry *left, struct hist_entry *right) > static int hist_entry__srcline_snprintf(struct hist_entry *he, char *bf, > size_t size, unsigned int width) > { > + if (!he->srcline) { > + if (!he->ms.map) > + he->srcline = SRCLINE_UNKNOWN; > + else { > + struct map *map = he->ms.map; > + he->srcline = get_srcline(map->dso, > + map__rip_2objdump(map, he->ip), > + he->ms.sym, true); > + } > + } could you put this into the function and use it also within sort__srcline_cmp? it's already 3 places duplicating the same code thanks, jirka