perf tools: tool->finished_round() doesn' t need perf_session
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: d704ebdae4aaeec89180dcfd0ca74e5bba318853 Gitweb: http://git.kernel.org/tip/d704ebdae4aaeec89180dcfd0ca74e5bba318853 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 3 Mar 2015 12:37:54 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 12 Mar 2015 12:39:49 -0300
perf tools: tool->finished_round() doesn't need perf_session
It is all about flushing the ordered queue or piping it thru, no need for a perf_session pointer.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-inject.c | 9 ++++++++- tools/perf/builtin-kvm.c | 7 +++++-- tools/perf/util/session.c | 24 +++++++++++++++--------- tools/perf/util/tool.h | 8 ++++++-- 4 files changed, 34 insertions(+), 14 deletions(-)
tools/perf/builtin-inject.c +8 -1
@@ -53,6 +53,13 @@ static int perf_event__repipe_synth(struct perf_tool *tool,return 0 ; } +static int perf_event__repipe_oe_synth (struct perf_tool *tool, +union perf_event *event, +struct ordered_events *oe__maybe_unused ) +{ +return perf_event__repipe_synth (tool, event); +} +static int perf_event__repipe_op2_synth (struct perf_tool *tool,union perf_event *event, struct perf_session *session
@@ -406,7 +413,7 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused) .unthrottle = perf_event__repipe, .attr = perf_event__repipe_attr, .tracing_data = perf_event__repipe_op2_synth, - .finished_round = perf_event__repipe_op2_synth, + .finished_round = perf_event__repipe_oe_synth, .build_id = perf_event__repipe_op2_synth, .id_index = perf_event__repipe_op2_synth, },
tools/perf/builtin-kvm.c +5 -2
@@ -18,6 +18,7 @@#include "util/stat.h" #include "util/top.h" #include "util/data.h" +#include "util/ordered-events.h" #include <sys/prctl.h> #ifdef HAVE_TIMERFD_SUPPORT
@@ -783,8 +784,10 @@ static int perf_kvm__mmap_read(struct perf_kvm_stat *kvm)/* flush queue after each round in which we processed events */ if (ntotal) { - kvm->session->ordered_events.next_flush = flush_time; - err = kvm->tool.finished_round (&kvm->tool,NULL , kvm->session); +struct ordered_events *oe = &kvm->session->ordered_events; + + oe->next_flush = flush_time; + err =ordered_events__flush (oe,OE_FLUSH__ROUND );if (err) {if (kvm->lost_events) pr_info("\nLost events: %" PRIu64 "\n\n",
tools/perf/util/session.c +15 -9
@@ -225,10 +225,17 @@ static int process_event_stub(struct perf_tool *tool __maybe_unused,return 0 ; } +static int process_build_id_stub (struct perf_tool *tool__maybe_unused , +union perf_event *event__maybe_unused , +struct perf_session *session__maybe_unused ) +{ +dump_printf (": unhandled!\n" ); +return 0 ; +} +static int process_finished_round_stub (struct perf_tool *tool__maybe_unused ,union perf_event *event__maybe_unused , -struct perf_session *perf_session -__maybe_unused ) +struct ordered_events *oe__maybe_unused ) {dump_printf (": unhandled!\n" );return 0 ;
@@ -236,7 +243,7 @@ static int process_finished_round_stub(struct perf_tool *tool __maybe_unused,static int process_finished_round (struct perf_tool *tool,union perf_event *event, -struct perf_session *session); +struct ordered_events *oe); static int process_id_index_stub(struct perf_tool *tool __maybe_unused, union perf_event *event __maybe_unused,
@@ -274,7 +281,7 @@ void perf_tool__fill_defaults(struct perf_tool *tool)if (tool->tracing_data ==NULL ) tool->tracing_data = process_event_synth_tracing_data_stub;if (tool->build_id ==NULL ) - tool->build_id = process_finished_round_stub; + tool->build_id = process_build_id_stub;if (tool->finished_round ==NULL ) {if (tool->ordered_events) tool->finished_round = process_finished_round;
@@ -526,10 +533,8 @@ static perf_event__swap_op perf_event__swap_ops[] = {*/ static int process_finished_round (struct perf_tool *tool__maybe_unused ,union perf_event *event__maybe_unused , -struct perf_session *session) +struct ordered_events *oe) { -struct ordered_events *oe = &session->ordered_events; -return ordered_events__flush (oe,OE_FLUSH__ROUND ); }
@@ -961,7 +966,8 @@ static s64 perf_session__process_user_event(struct perf_session *session, union perf_event *event, u64 file_offset) { -struct perf_tool *tool = session->ordered_events.tool; +struct ordered_events *oe = &session->ordered_events; +struct perf_tool *tool = oe->tool;int fd =perf_data_file__fd (session->file);int err;
@@ -989,7 +995,7 @@ static s64 perf_session__process_user_event(struct perf_session *session,case PERF_RECORD_HEADER_BUILD_ID :return tool->build_id (tool, event, session);case PERF_RECORD_FINISHED_ROUND : -return tool->finished_round (tool, event, session); +return tool->finished_round (tool, event, oe);case PERF_RECORD_ID_INDEX :return tool->id_index (tool, event, session);default :
tools/perf/util/tool.h +6 -2
@@ -10,6 +10,7 @@ struct perf_evsel;struct perf_sample ;struct perf_tool ;struct machine ; +struct ordered_events ; typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample,
@@ -25,6 +26,9 @@ typedef int (*event_attr_op)(struct perf_tool *tool,typedef int (*event_op2 )(struct perf_tool *tool,union perf_event *event,struct perf_session *session); +typedef int (*event_oe )(struct perf_tool *tool,union perf_event *event, +struct ordered_events *oe); +struct perf_tool {event_sample sample, read;
@@ -38,8 +42,8 @@ struct perf_tool { unthrottle;event_attr_op attr;event_op2 tracing_data; -event_op2 finished_round, - build_id, +event_oe finished_round; +event_op2 build_id, id_index;bool ordered_events;bool ordering_requires_timestamps;