perf probe: Change event list format
Change event list format for user readability. perf probe --list shows event list in "[GROUP:EVENT] EVENT-DEFINITION" format, but this format is different from the output of perf-list, and EVENT-DEFINITION is a bit blunt. This patch changes the format to more user friendly one. Before: [probe:schedule_0] schedule+10 prev cpu After: probe:schedule_0 (on schedule+10 with prev cpu) Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Jim Keniston <jkenisto@us.ibm.com> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Frank Ch. Eigler <fche@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jason Baron <jbaron@redhat.com> Cc: K.Prasad <prasad@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: systemtap <systemtap@sources.redhat.com> Cc: DLE <dle-develop@lists.sourceforge.net> LKML-Reference: <20091208220240.10142.42916.stgit@dhcp-100-2-132.bos.redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
6ab8886326
commit
278498d438
@@ -379,11 +379,29 @@ static void clear_probe_point(struct probe_point *pp)
|
|||||||
memset(pp, 0, sizeof(pp));
|
memset(pp, 0, sizeof(pp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Show an event */
|
||||||
|
static void show_perf_probe_event(const char *group, const char *event,
|
||||||
|
const char *place, struct probe_point *pp)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char buf[128];
|
||||||
|
|
||||||
|
e_snprintf(buf, 128, "%s:%s", group, event);
|
||||||
|
printf(" %-40s (on %s", buf, place);
|
||||||
|
|
||||||
|
if (pp->nr_args > 0) {
|
||||||
|
printf(" with");
|
||||||
|
for (i = 0; i < pp->nr_args; i++)
|
||||||
|
printf(" %s", pp->args[i]);
|
||||||
|
}
|
||||||
|
printf(")\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* List up current perf-probe events */
|
/* List up current perf-probe events */
|
||||||
void show_perf_probe_events(void)
|
void show_perf_probe_events(void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int fd;
|
int fd, nr;
|
||||||
char *group, *event;
|
char *group, *event;
|
||||||
struct probe_point pp;
|
struct probe_point pp;
|
||||||
struct strlist *rawlist;
|
struct strlist *rawlist;
|
||||||
@@ -396,8 +414,13 @@ void show_perf_probe_events(void)
|
|||||||
for (i = 0; i < strlist__nr_entries(rawlist); i++) {
|
for (i = 0; i < strlist__nr_entries(rawlist); i++) {
|
||||||
ent = strlist__entry(rawlist, i);
|
ent = strlist__entry(rawlist, i);
|
||||||
parse_trace_kprobe_event(ent->s, &group, &event, &pp);
|
parse_trace_kprobe_event(ent->s, &group, &event, &pp);
|
||||||
|
/* Synthesize only event probe point */
|
||||||
|
nr = pp.nr_args;
|
||||||
|
pp.nr_args = 0;
|
||||||
synthesize_perf_probe_event(&pp);
|
synthesize_perf_probe_event(&pp);
|
||||||
printf("[%s:%s]\t%s\n", group, event, pp.probes[0]);
|
pp.nr_args = nr;
|
||||||
|
/* Show an event */
|
||||||
|
show_perf_probe_event(group, event, pp.probes[0], &pp);
|
||||||
free(group);
|
free(group);
|
||||||
free(event);
|
free(event);
|
||||||
clear_probe_point(&pp);
|
clear_probe_point(&pp);
|
||||||
|
Reference in New Issue
Block a user