mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 00:51:44 +00:00
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:
parent
0542bb9c8d
commit
c4ff49209b
@ -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)
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user