perf probe: Simplify __add_probe_trace_events code

Simplify the __add_probe_trace_events() code by taking out the
probe_trace_event__set_name() and updating show_perf_probe_event()

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20150715091400.8915.85501.stgit@localhost.localdomain
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Masami Hiramatsu 2015-07-15 18:14:00 +09:00 committed by Arnaldo Carvalho de Melo
parent 4ba1faa19f
commit a3c9de6280
1 changed files with 43 additions and 27 deletions

View File

@ -2478,16 +2478,54 @@ static void warn_uprobe_event_compat(struct probe_trace_event *tev)
free(buf);
}
/* Set new name from original perf_probe_event and namelist */
static int probe_trace_event__set_name(struct probe_trace_event *tev,
struct perf_probe_event *pev,
struct strlist *namelist,
bool allow_suffix)
{
const char *event, *group;
char buf[64];
int ret;
if (pev->event)
event = pev->event;
else
if (pev->point.function && !strisglob(pev->point.function))
event = pev->point.function;
else
event = tev->point.realname;
if (pev->group)
group = pev->group;
else
group = PERFPROBE_GROUP;
/* Get an unused new event name */
ret = get_new_event_name(buf, 64, event,
namelist, allow_suffix);
if (ret < 0)
return ret;
event = buf;
tev->event = strdup(event);
tev->group = strdup(group);
if (tev->event == NULL || tev->group == NULL)
return -ENOMEM;
/* Add added event name to namelist */
strlist__add(namelist, event);
return 0;
}
static int __add_probe_trace_events(struct perf_probe_event *pev,
struct probe_trace_event *tevs,
int ntevs, bool allow_suffix)
{
int i, fd, ret;
struct probe_trace_event *tev = NULL;
char buf[64];
const char *event = NULL, *group = NULL;
struct strlist *namelist;
bool safename;
if (pev->uprobes)
fd = open_uprobe_events(true);
@ -2507,7 +2545,6 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
goto close_out;
}
safename = (pev->point.function && !strisglob(pev->point.function));
ret = 0;
pr_info("Added new event%s\n", (ntevs > 1) ? "s:" : ":");
for (i = 0; i < ntevs; i++) {
@ -2516,36 +2553,15 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
if (!tev->point.symbol)
continue;
if (pev->event)
event = pev->event;
else
if (safename)
event = pev->point.function;
else
event = tev->point.realname;
if (pev->group)
group = pev->group;
else
group = PERFPROBE_GROUP;
/* Get an unused new event name */
ret = get_new_event_name(buf, 64, event,
namelist, allow_suffix);
/* Set new name for tev (and update namelist) */
ret = probe_trace_event__set_name(tev, pev, namelist,
allow_suffix);
if (ret < 0)
break;
event = buf;
tev->event = strdup(event);
tev->group = strdup(group);
if (tev->event == NULL || tev->group == NULL) {
ret = -ENOMEM;
break;
}
ret = write_probe_trace_event(fd, tev);
if (ret < 0)
break;
/* Add added event name to namelist */
strlist__add(namelist, event);
/* We use tev's name for showing new events */
show_perf_probe_event(tev->group, tev->event, pev,