Commit c4ff4920 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Arnaldo Carvalho de Melo

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: default avatarMasami 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@devboxSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 0542bb9c
...@@ -67,7 +67,6 @@ int e_snprintf(char *str, size_t size, const char *format, ...) ...@@ -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 @@ char *synthesize_perf_probe_arg(struct perf_probe_arg *pa) ...@@ -1716,7 +1715,7 @@ char *synthesize_perf_probe_arg(struct perf_probe_arg *pa)
} }
/* 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 @@ static char *synthesize_perf_probe_point(struct perf_probe_point *pp) ...@@ -1755,30 +1754,36 @@ static char *synthesize_perf_probe_point(struct perf_probe_point *pp)
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)
......
...@@ -121,6 +121,7 @@ int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev); ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment