Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1301247 > unrolled thread

[PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name

Started byNamhyung Kim <namhyung@kernel.org>
First post2016-01-05 04:10 +0100
Last post2016-01-05 11:50 +0100
Articles 3 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name Namhyung Kim <namhyung@kernel.org> - 2016-01-05 04:10 +0100
    Re: [PATCH 2/5] perf tools: Add all matching dynamic sort keys for  field name Jiri Olsa <jolsa@redhat.com> - 2016-01-05 10:30 +0100
      Re: [PATCH 2/5] perf tools: Add all matching dynamic sort keys for  field name Namhyung Kim <namhyung@kernel.org> - 2016-01-05 11:50 +0100

#1301247 — [PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name

FromNamhyung Kim <namhyung@kernel.org>
Date2016-01-05 04:10 +0100
Subject[PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name
Message-ID<qNqat-4fJ-1@gated-at.bofh.it>
When a perf.data file has multiple events, it's likely to be similar
(tracepoint) events.  In that case, they might have same field name so
add all of them to sort keys instead of bailing out.

In addition, it contains a trivial whitespace fix at callsite of
add_all_dynamic_fields().

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/util/sort.c | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 59c4c8586d79..9618a64875c0 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1965,6 +1965,28 @@ static int add_all_dynamic_fields(struct perf_evlist *evlist, bool raw_trace)
 	return 0;
 }
 
+static int add_all_matching_fields(struct perf_evlist *evlist,
+				   char *field_name, bool raw_trace)
+{
+	int ret = -ESRCH;
+	struct perf_evsel *evsel;
+	struct format_field *field;
+
+	evlist__for_each(evlist, evsel) {
+		if (evsel->attr.type != PERF_TYPE_TRACEPOINT)
+			continue;
+
+		field = pevent_find_any_field(evsel->tp_format, field_name);
+		if (field == NULL)
+			continue;
+
+		ret = __dynamic_dimension__add(evsel, field, raw_trace);
+		if (ret < 0)
+			break;
+	}
+	return ret;
+}
+
 static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
 {
 	char *str, *event_name, *field_name, *opt_name;
@@ -1995,7 +2017,12 @@ static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
 	}
 
 	if (!strcmp(field_name, "trace_fields")) {
-		ret = add_all_dynamic_fields(evlist ,raw_trace);
+		ret = add_all_dynamic_fields(evlist, raw_trace);
+		goto out;
+	}
+
+	if (event_name == NULL) {
+		ret = add_all_matching_fields(evlist, field_name, raw_trace);
 		goto out;
 	}
 
-- 
2.6.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1301358 — Re: [PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name

FromJiri Olsa <jolsa@redhat.com>
Date2016-01-05 10:30 +0100
SubjectRe: [PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name
Message-ID<qNw6d-5k-3@gated-at.bofh.it>
In reply to#1301247
On Tue, Jan 05, 2016 at 12:03:44PM +0900, Namhyung Kim wrote:

SNIP

>  static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
>  {
>  	char *str, *event_name, *field_name, *opt_name;
> @@ -1995,7 +2017,12 @@ static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
>  	}
>  
>  	if (!strcmp(field_name, "trace_fields")) {
> -		ret = add_all_dynamic_fields(evlist ,raw_trace);
> +		ret = add_all_dynamic_fields(evlist, raw_trace);
> +		goto out;
> +	}
> +
> +	if (event_name == NULL) {
> +		ret = add_all_matching_fields(evlist, field_name, raw_trace);
>  		goto out;

should this be handled within find_evsel function:

        /* case 1 */
        if (event_name == NULL) {
                if (evlist->nr_entries != 1) {


looks like it'd be dead code otherwise

thanks,
jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1301418 — Re: [PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name

FromNamhyung Kim <namhyung@kernel.org>
Date2016-01-05 11:50 +0100
SubjectRe: [PATCH 2/5] perf tools: Add all matching dynamic sort keys for field name
Message-ID<qNxlE-Sz-15@gated-at.bofh.it>
In reply to#1301358
Hi Jiri,

Thanks for your review!

On Tue, Jan 05, 2016 at 10:24:27AM +0100, Jiri Olsa wrote:
> On Tue, Jan 05, 2016 at 12:03:44PM +0900, Namhyung Kim wrote:
> 
> SNIP
> 
> >  static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
> >  {
> >  	char *str, *event_name, *field_name, *opt_name;
> > @@ -1995,7 +2017,12 @@ static int add_dynamic_entry(struct perf_evlist *evlist, const char *tok)
> >  	}
> >  
> >  	if (!strcmp(field_name, "trace_fields")) {
> > -		ret = add_all_dynamic_fields(evlist ,raw_trace);
> > +		ret = add_all_dynamic_fields(evlist, raw_trace);
> > +		goto out;
> > +	}
> > +
> > +	if (event_name == NULL) {
> > +		ret = add_all_matching_fields(evlist, field_name, raw_trace);
> >  		goto out;
> 
> should this be handled within find_evsel function:
> 
>         /* case 1 */
>         if (event_name == NULL) {
>                 if (evlist->nr_entries != 1) {
> 
> 
> looks like it'd be dead code otherwise

Hmm.. OK.  But the find_evsel() is to get a evsel so it's not good
place to add the code IMHO.  I'll remove the case 1 from it.

Thanks,
Namhyung
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web