Skip to content

Commit

Permalink
perf data ctf: Generate fork and exit events to CTF output
Browse files Browse the repository at this point in the history
If 'all' is selected, convert fork and exit events to output CTF stream.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1466767332-114472-8-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Wang Nan authored and Arnaldo Carvalho de Melo committed Jun 28, 2016
1 parent 9e1a7ea commit ebccba3
Showing 1 changed file with 43 additions and 1 deletion.
44 changes: 43 additions & 1 deletion tools/perf/util/data-convert-bt.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ struct ctf_writer {
struct bt_ctf_field_type *array[6];
} data;
struct bt_ctf_event_class *comm_class;
struct bt_ctf_event_class *exit_class;
struct bt_ctf_event_class *fork_class;
};

struct convert {
Expand Down Expand Up @@ -812,6 +814,21 @@ __FUNC_PROCESS_NON_SAMPLE(comm,
__NON_SAMPLE_SET_FIELD(comm, u32, tid);
__NON_SAMPLE_SET_FIELD(comm, string, comm);
)
__FUNC_PROCESS_NON_SAMPLE(fork,
__NON_SAMPLE_SET_FIELD(fork, u32, pid);
__NON_SAMPLE_SET_FIELD(fork, u32, ppid);
__NON_SAMPLE_SET_FIELD(fork, u32, tid);
__NON_SAMPLE_SET_FIELD(fork, u32, ptid);
__NON_SAMPLE_SET_FIELD(fork, u64, time);
)

__FUNC_PROCESS_NON_SAMPLE(exit,
__NON_SAMPLE_SET_FIELD(fork, u32, pid);
__NON_SAMPLE_SET_FIELD(fork, u32, ppid);
__NON_SAMPLE_SET_FIELD(fork, u32, tid);
__NON_SAMPLE_SET_FIELD(fork, u32, ptid);
__NON_SAMPLE_SET_FIELD(fork, u64, time);
)
#undef __NON_SAMPLE_SET_FIELD
#undef __FUNC_PROCESS_NON_SAMPLE

Expand Down Expand Up @@ -1127,6 +1144,22 @@ __FUNC_ADD_NON_SAMPLE_EVENT_CLASS(comm,
__NON_SAMPLE_ADD_FIELD(string, comm);
)

__FUNC_ADD_NON_SAMPLE_EVENT_CLASS(fork,
__NON_SAMPLE_ADD_FIELD(u32, pid);
__NON_SAMPLE_ADD_FIELD(u32, ppid);
__NON_SAMPLE_ADD_FIELD(u32, tid);
__NON_SAMPLE_ADD_FIELD(u32, ptid);
__NON_SAMPLE_ADD_FIELD(u64, time);
)

__FUNC_ADD_NON_SAMPLE_EVENT_CLASS(exit,
__NON_SAMPLE_ADD_FIELD(u32, pid);
__NON_SAMPLE_ADD_FIELD(u32, ppid);
__NON_SAMPLE_ADD_FIELD(u32, tid);
__NON_SAMPLE_ADD_FIELD(u32, ptid);
__NON_SAMPLE_ADD_FIELD(u64, time);
)

#undef __NON_SAMPLE_ADD_FIELD
#undef __FUNC_ADD_NON_SAMPLE_EVENT_CLASS

Expand All @@ -1136,6 +1169,12 @@ static int setup_non_sample_events(struct ctf_writer *cw,
int ret;

ret = add_comm_event(cw);
if (ret)
return ret;
ret = add_exit_event(cw);
if (ret)
return ret;
ret = add_fork_event(cw);
if (ret)
return ret;
return 0;
Expand Down Expand Up @@ -1436,8 +1475,11 @@ int bt_convert__perf2ctf(const char *input, const char *path,
struct ctf_writer *cw = &c.writer;
int err = -1;

if (opts->all)
if (opts->all) {
c.tool.comm = process_comm_event;
c.tool.exit = process_exit_event;
c.tool.fork = process_fork_event;
}

perf_config(convert__config, &c);

Expand Down

0 comments on commit ebccba3

Please sign in to comment.