perf probe: Uncomment and export synthesize_perf_probe_point()

Uncomment and export synthesize_perf_probe_point() which had once
introduced but has been disabled for a long time. This renews the code
and re-enable it.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20160608092949.3116.21958.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Masami Hiramatsu 2016-06-08 18:29:50 +09:00 committed by Arnaldo Carvalho de Melo
parent 0542bb9c8d
commit c4ff49209b
2 changed files with 23 additions and 17 deletions

View file

@ -67,7 +67,6 @@ int e_snprintf(char *str, size_t size, const char *format, ...)
return ret; return ret;
} }
static char *synthesize_perf_probe_point(struct perf_probe_point *pp);
static struct machine *host_machine; static struct machine *host_machine;
/* Initialize symbol maps and path of vmlinux/modules */ /* Initialize symbol maps and path of vmlinux/modules */
@ -1716,7 +1715,7 @@ out:
} }
/* Compose only probe point (not argument) */ /* Compose only probe point (not argument) */
static char *synthesize_perf_probe_point(struct perf_probe_point *pp) char *synthesize_perf_probe_point(struct perf_probe_point *pp)
{ {
struct strbuf buf; struct strbuf buf;
char *tmp, *ret = NULL; char *tmp, *ret = NULL;
@ -1755,30 +1754,36 @@ out:
return ret; return ret;
} }
#if 0
char *synthesize_perf_probe_command(struct perf_probe_event *pev) char *synthesize_perf_probe_command(struct perf_probe_event *pev)
{ {
char *buf; struct strbuf buf;
int i, len, ret; char *tmp, *ret = NULL;
int i;
buf = synthesize_perf_probe_point(&pev->point); if (strbuf_init(&buf, 64))
if (!buf)
return NULL; return NULL;
if (pev->event)
if (strbuf_addf(&buf, "%s:%s=", pev->group ?: PERFPROBE_GROUP,
pev->event) < 0)
goto out;
tmp = synthesize_perf_probe_point(&pev->point);
if (!tmp || strbuf_addstr(&buf, tmp) < 0)
goto out;
free(tmp);
len = strlen(buf);
for (i = 0; i < pev->nargs; i++) { for (i = 0; i < pev->nargs; i++) {
ret = e_snprintf(&buf[len], MAX_CMDLEN - len, " %s", tmp = synthesize_perf_probe_arg(pev->args + i);
pev->args[i].name); if (!tmp || strbuf_addf(&buf, " %s", tmp) < 0)
if (ret <= 0) { goto out;
free(buf); free(tmp);
return NULL;
}
len += ret;
} }
return buf; ret = strbuf_detach(&buf, NULL);
out:
strbuf_release(&buf);
return ret;
} }
#endif
static int __synthesize_probe_trace_arg_ref(struct probe_trace_arg_ref *ref, static int __synthesize_probe_trace_arg_ref(struct probe_trace_arg_ref *ref,
struct strbuf *buf, int depth) struct strbuf *buf, int depth)

View file

@ -121,6 +121,7 @@ int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev);
char *synthesize_perf_probe_command(struct perf_probe_event *pev); char *synthesize_perf_probe_command(struct perf_probe_event *pev);
char *synthesize_probe_trace_command(struct probe_trace_event *tev); char *synthesize_probe_trace_command(struct probe_trace_event *tev);
char *synthesize_perf_probe_arg(struct perf_probe_arg *pa); char *synthesize_perf_probe_arg(struct perf_probe_arg *pa);
char *synthesize_perf_probe_point(struct perf_probe_point *pp);
int perf_probe_event__copy(struct perf_probe_event *dst, int perf_probe_event__copy(struct perf_probe_event *dst,
struct perf_probe_event *src); struct perf_probe_event *src);