Commit f9f6f2a9 authored by Geneviève Bastien's avatar Geneviève Bastien Committed by Arnaldo Carvalho de Melo

perf data: Add mmap[2] events to CTF conversion

This adds the mmap and mmap2 events to the CTF trace obtained from perf
data.

These events will allow CTF trace visualization tools like Trace Compass
to automatically resolve the symbols of the callchain to the
corresponding function or origin library.

To include those events, one needs to convert with the --all option.
Here follows an output of babeltrace:

  $ sudo perf data convert --all --to-ctf myctftrace
  $ babeltrace ./myctftrace
  [19:00:00.000000000] (+0.000000000) perf_mmap2: { cpu_id = 0 },
 { pid = 638, tid = 638, start = 0x7F54AE39E000, filename =
 "/usr/lib/ld-2.25.so" }
  [19:00:00.000000000] (+0.000000000) perf_mmap2: { cpu_id = 0 }, { pid =
 638, tid = 638, start = 0x7F54AE565000, filename =
 "/usr/lib/libudev.so.1.6.6" }
  [19:00:00.000000000] (+0.000000000) perf_mmap2: { cpu_id = 0 }, { pid =
 638, tid = 638, start = 0x7FFC093EA000, filename = "[vdso]" }
Signed-off-by: default avatarGeneviève Bastien <gbastien@versatic.net>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Francis Deslauriers <francis.deslauriers@efficios.com>
Cc: Julien Desfossez <jdesfossez@efficios.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20170727181205.24843-2-gbastien@versatic.netSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent a3073c8e
...@@ -76,6 +76,8 @@ struct ctf_writer { ...@@ -76,6 +76,8 @@ struct ctf_writer {
struct bt_ctf_event_class *comm_class; struct bt_ctf_event_class *comm_class;
struct bt_ctf_event_class *exit_class; struct bt_ctf_event_class *exit_class;
struct bt_ctf_event_class *fork_class; struct bt_ctf_event_class *fork_class;
struct bt_ctf_event_class *mmap_class;
struct bt_ctf_event_class *mmap2_class;
}; };
struct convert { struct convert {
...@@ -915,6 +917,18 @@ __FUNC_PROCESS_NON_SAMPLE(exit, ...@@ -915,6 +917,18 @@ __FUNC_PROCESS_NON_SAMPLE(exit,
__NON_SAMPLE_SET_FIELD(fork, u32, ptid); __NON_SAMPLE_SET_FIELD(fork, u32, ptid);
__NON_SAMPLE_SET_FIELD(fork, u64, time); __NON_SAMPLE_SET_FIELD(fork, u64, time);
) )
__FUNC_PROCESS_NON_SAMPLE(mmap,
__NON_SAMPLE_SET_FIELD(mmap, u32, pid);
__NON_SAMPLE_SET_FIELD(mmap, u32, tid);
__NON_SAMPLE_SET_FIELD(mmap, u64_hex, start);
__NON_SAMPLE_SET_FIELD(mmap, string, filename);
)
__FUNC_PROCESS_NON_SAMPLE(mmap2,
__NON_SAMPLE_SET_FIELD(mmap2, u32, pid);
__NON_SAMPLE_SET_FIELD(mmap2, u32, tid);
__NON_SAMPLE_SET_FIELD(mmap2, u64_hex, start);
__NON_SAMPLE_SET_FIELD(mmap2, string, filename);
)
#undef __NON_SAMPLE_SET_FIELD #undef __NON_SAMPLE_SET_FIELD
#undef __FUNC_PROCESS_NON_SAMPLE #undef __FUNC_PROCESS_NON_SAMPLE
...@@ -1254,6 +1268,19 @@ __FUNC_ADD_NON_SAMPLE_EVENT_CLASS(exit, ...@@ -1254,6 +1268,19 @@ __FUNC_ADD_NON_SAMPLE_EVENT_CLASS(exit,
__NON_SAMPLE_ADD_FIELD(u64, time); __NON_SAMPLE_ADD_FIELD(u64, time);
) )
__FUNC_ADD_NON_SAMPLE_EVENT_CLASS(mmap,
__NON_SAMPLE_ADD_FIELD(u32, pid);
__NON_SAMPLE_ADD_FIELD(u32, tid);
__NON_SAMPLE_ADD_FIELD(u64_hex, start);
__NON_SAMPLE_ADD_FIELD(string, filename);
)
__FUNC_ADD_NON_SAMPLE_EVENT_CLASS(mmap2,
__NON_SAMPLE_ADD_FIELD(u32, pid);
__NON_SAMPLE_ADD_FIELD(u32, tid);
__NON_SAMPLE_ADD_FIELD(u64_hex, start);
__NON_SAMPLE_ADD_FIELD(string, filename);
)
#undef __NON_SAMPLE_ADD_FIELD #undef __NON_SAMPLE_ADD_FIELD
#undef __FUNC_ADD_NON_SAMPLE_EVENT_CLASS #undef __FUNC_ADD_NON_SAMPLE_EVENT_CLASS
...@@ -1269,6 +1296,12 @@ static int setup_non_sample_events(struct ctf_writer *cw, ...@@ -1269,6 +1296,12 @@ static int setup_non_sample_events(struct ctf_writer *cw,
if (ret) if (ret)
return ret; return ret;
ret = add_fork_event(cw); ret = add_fork_event(cw);
if (ret)
return ret;
ret = add_mmap_event(cw);
if (ret)
return ret;
ret = add_mmap2_event(cw);
if (ret) if (ret)
return ret; return ret;
return 0; return 0;
...@@ -1572,6 +1605,8 @@ int bt_convert__perf2ctf(const char *input, const char *path, ...@@ -1572,6 +1605,8 @@ int bt_convert__perf2ctf(const char *input, const char *path,
c.tool.comm = process_comm_event; c.tool.comm = process_comm_event;
c.tool.exit = process_exit_event; c.tool.exit = process_exit_event;
c.tool.fork = process_fork_event; c.tool.fork = process_fork_event;
c.tool.mmap = process_mmap_event;
c.tool.mmap2 = process_mmap2_event;
} }
err = perf_config(convert__config, &c); err = perf_config(convert__config, &c);
......
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