Skip to content

Commit

Permalink
perf tools: Fix tracepoint id to string perf.data header table
Browse files Browse the repository at this point in the history
It was broken by f006d25 that passed just the event name, not the complete
sys:event that it expected to open the /sys/.../sys/sys:event/id file to get
the id.

Fix it by moving it to after parse_events in cmd_record, as at that point
we can just traverse the evsel_list and use evsel->attr.config +
event_name(evsel) instead of re-opening the /id file.

Reported-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
Cc: Franck Bui-Huu <vagabon.xyz@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Han Pingtian <phan@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <20110117202801.GG2085@ghostprotocols.net>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Arnaldo Carvalho de Melo committed Jan 17, 2011
1 parent dd9a9ad commit ad7f4e3
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 29 deletions.
2 changes: 2 additions & 0 deletions tools/perf/builtin-record.c
Original file line number Diff line number Diff line change
Expand Up @@ -936,6 +936,8 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
list_for_each_entry(pos, &evsel_list, node) {
if (perf_evsel__alloc_fd(pos, cpus->nr, threads->nr) < 0)
goto out_free_fd;
if (perf_header__push_event(pos->attr.config, event_name(pos)))
goto out_free_fd;
}
event_array = malloc((sizeof(struct pollfd) * MAX_NR_CPUS *
MAX_COUNTERS * threads->nr));
Expand Down
29 changes: 0 additions & 29 deletions tools/perf/util/parse-events.c
Original file line number Diff line number Diff line change
Expand Up @@ -490,32 +490,6 @@ parse_multiple_tracepoint_event(char *sys_name, const char *evt_exp,
return EVT_HANDLED_ALL;
}

static int store_event_type(const char *orgname)
{
char filename[PATH_MAX], *c;
FILE *file;
int id, n;

sprintf(filename, "%s/", debugfs_path);
strncat(filename, orgname, strlen(orgname));
strcat(filename, "/id");

c = strchr(filename, ':');
if (c)
*c = '/';

file = fopen(filename, "r");
if (!file)
return 0;
n = fscanf(file, "%i", &id);
fclose(file);
if (n < 1) {
pr_err("cannot store event ID\n");
return -EINVAL;
}
return perf_header__push_event(id, orgname);
}

static enum event_result parse_tracepoint_event(const char **strp,
struct perf_event_attr *attr)
{
Expand Down Expand Up @@ -559,9 +533,6 @@ static enum event_result parse_tracepoint_event(const char **strp,
return parse_multiple_tracepoint_event(sys_name, evt_name,
flags);
} else {
if (store_event_type(evt_name) < 0)
return EVT_FAILED;

return parse_single_tracepoint_event(sys_name, evt_name,
evt_length, attr, strp);
}
Expand Down

0 comments on commit ad7f4e3

Please sign in to comment.