mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@gmail.com>
To: Dmitry Antipov <dmitry.antipov@linaro.org>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
	Ingo Molnar <mingo@redhat.com>, Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-kernel@vger.kernel.org, linaro-dev@lists.linaro.org,
	patches@linaro.org
Subject: Re: [PATCH] perf sched replay: fix event lookup
Date: Mon, 11 Jun 2012 14:46:02 +0900	[thread overview]
Message-ID: <87pq96pfj9.fsf@sejong.aot.lge.com> (raw)
In-Reply-To: <1339232758-920-1-git-send-email-dmitry.antipov@linaro.org> (Dmitry Antipov's message of "Sat, 9 Jun 2012 13:05:58 +0400")

Hi,

On Sat,  9 Jun 2012 13:05:58 +0400, Dmitry Antipov wrote:
> Use new function trace_find_event_by_name to lookup events before
> looking through /sys files. This helps 'perf sched replay' to map
> event names to IDs correctly when processing perf.data recorded
> on another machine.
>

Basically the same approach with the previous reply, please put this
into trace_event__id(). And minor nits below..


> Signed-off-by: Dmitry Antipov <dmitry.antipov@linaro.org>
> ---
>  tools/perf/util/evlist.c            |   18 ++++++++++++++++--
>  tools/perf/util/trace-event-parse.c |    4 ++++
>  tools/perf/util/trace-event.h       |    1 +
>  3 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
> index 4ac5f5a..7ebb9c5 100644
> --- a/tools/perf/util/evlist.c
> +++ b/tools/perf/util/evlist.c
> @@ -17,6 +17,7 @@
>  #include <unistd.h>
>  
>  #include "parse-events.h"
> +#include "trace-event.h"
>  
>  #include <sys/mman.h>
>  
> @@ -231,12 +232,25 @@ int perf_evlist__set_tracepoints_handlers(struct perf_evlist *evlist,
>  					  const struct perf_evsel_str_handler *assocs,
>  					  size_t nr_assocs)
>  {
> +	struct event_format *event;
>  	struct perf_evsel *evsel;
> +	char *p, *sys, *name;
>  	int err;
> -	size_t i;
> +	size_t i, off;
>  
>  	for (i = 0; i < nr_assocs; i++) {
> -		err = trace_event__id(assocs[i].name);
> +		err = -ENOENT;
> +		p = strchr(assocs[i].name, ':');
> +		if (!p)
> +			goto out;

Is this really needed? It looks original trace_event__id() require
this. But because we'll use pevent_find_event_by_name, the 'sys' part
can be omitted from now on?


> +		off = p - assocs[i].name;
> +		sys = malloc(off + 1);

The malloc() can fail, please check the return value.

Thanks,
Namhyung


> +		memcpy(sys, assocs[i].name, off);
> +		sys[off] = '\0';
> +		name = p + 1;
> +		event = trace_find_event_by_name(sys, name);
> +		err = event ? event->id : trace_event__id(assocs[i].name);
> +		free(sys);
>  		if (err < 0)
>  			goto out;
>  
> diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
> index df2fddb..44cbb40 100644
> --- a/tools/perf/util/trace-event-parse.c
> +++ b/tools/perf/util/trace-event-parse.c
> @@ -176,6 +176,10 @@ struct event_format *trace_find_event(int type)
>  	return pevent_find_event(pevent, type);
>  }
>  
> +struct event_format *trace_find_event_by_name(const char *sys, const char *name)
> +{
> +	return pevent_find_event_by_name(pevent, sys, name);
> +}
>  
>  void print_trace_event(int cpu, void *data, int size)
>  {
> diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h
> index 639852a..66f83a0 100644
> --- a/tools/perf/util/trace-event.h
> +++ b/tools/perf/util/trace-event.h
> @@ -40,6 +40,7 @@ int parse_event_file(char *buf, unsigned long size, char *sys);
>  
>  struct pevent_record *trace_peek_data(int cpu);
>  struct event_format *trace_find_event(int type);
> +struct event_format *trace_find_event_by_name(const char *sys, const char *name);
>  
>  unsigned long long
>  raw_field_value(struct event_format *event, const char *name, void *data);

  reply	other threads:[~2012-06-11  5:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-09  9:05 Dmitry Antipov
2012-06-11  5:46 ` Namhyung Kim [this message]
2012-06-11 14:08   ` Arnaldo Carvalho de Melo
2012-06-12  6:01     ` Namhyung Kim
2012-06-12 17:11       ` Arnaldo Carvalho de Melo
2012-06-25 23:20       ` Arnaldo Carvalho de Melo
2012-06-27  9:18         ` Dmitry Antipov
2012-06-27 14:21           ` Arnaldo Carvalho de Melo
2012-06-29 16:17         ` [tip:perf/core] perf tools: Stop using a global trace events description list tip-bot for Arnaldo Carvalho de Melo
2012-06-25 18:02 ` [PATCH] perf sched replay: fix event lookup Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pq96pfj9.fsf@sejong.aot.lge.com \
    --to=namhyung@gmail.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@ghostprotocols.net \
    --cc=dmitry.antipov@linaro.org \
    --cc=linaro-dev@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=patches@linaro.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®