perf ordered_events: Untangle from perf_session
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: fa713a4eb9cebe5dec71b1bd11429603e17d841d Gitweb: http://git.kernel.org/tip/fa713a4eb9cebe5dec71b1bd11429603e17d841d Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 3 Mar 2015 11:48:12 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 11 Mar 2015 10:16:50 -0300
perf ordered_events: Untangle from perf_session
For use by tools that are not perf.data based, as maybe 'perf trace' in live mode.
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/util/ordered-events.c | 17 +++++++++-------- tools/perf/util/ordered-events.h | 8 +++++--- tools/perf/util/session.c | 37 ++++++++++++++++++++++++++----------- tools/perf/util/session.h | 3 ++- 4 files changed, 42 insertions(+), 23 deletions(-)
tools/perf/util/ordered-events.c +9 -8
@@ -153,10 +153,11 @@ void ordered_events__delete(struct ordered_events *oe, struct ordered_event *evefree_dup_event (oe, event->event); } -static int __ordered_events__flush (struct perf_session *s, +static int __ordered_events__flush (struct ordered_events *oe, +struct machines *machines, +struct perf_evlist *evlist,struct perf_tool *tool) { -struct ordered_events *oe = &s->ordered_events;struct list_head *head = &oe->events;struct ordered_event *tmp, *iter;struct perf_sample sample;
@@ -179,12 +180,12 @@ static int __ordered_events__flush(struct perf_session *s,if (iter->timestamp > limit)break ; - ret =perf_evlist__parse_sample (s->evlist, iter->event, &sample); + ret =perf_evlist__parse_sample (evlist, iter->event, &sample);if (ret)pr_err ("Can't parse sample, err = %d\n" , ret);else { - ret =perf_session__deliver_event (s, iter->event, &sample, tool, - iter->file_offset); + ret =machines__deliver_event (machines, evlist, iter->event, + &sample, tool, iter->file_offset);if (ret)return ret; }
@@ -204,10 +205,10 @@ static int __ordered_events__flush(struct perf_session *s,return 0 ; } -int ordered_events__flush (struct perf_session *s,struct perf_tool *tool, +int ordered_events__flush (struct ordered_events *oe,struct machines *machines, +struct perf_evlist *evlist,struct perf_tool *tool,enum oe_flush how) { -struct ordered_events *oe = &s->ordered_events;static const char *const str[] = {"NONE" ,"FINAL" ,
@@ -251,7 +252,7 @@ int ordered_events__flush(struct perf_session *s, struct perf_tool *tool, str[how], oe->nr_events);pr_oe_time (oe->max_timestamp,"max_timestamp\n" ); - err =__ordered_events__flush (s, tool); + err =__ordered_events__flush (oe, machines, evlist, tool);if (!err) {if (how ==OE_FLUSH__ROUND )
tools/perf/util/ordered-events.h +5 -3
@@ -2,9 +2,10 @@#define __ORDERED_EVENTS_H#include <linux/types.h> -#include "tool.h" -struct perf_session ; +struct perf_tool ; +struct perf_evlist ; +struct machines ;struct ordered_event {u64 timestamp;
@@ -40,7 +41,8 @@ struct ordered_events {struct ordered_event *ordered_events__new (struct ordered_events *oe,u64 timestamp,union perf_event *event);void ordered_events__delete (struct ordered_events *oe,struct ordered_event *event); -int ordered_events__flush (struct perf_session *s,struct perf_tool *tool, +int ordered_events__flush (struct ordered_events *oe,struct machines *machines, +struct perf_evlist *evlist,struct perf_tool *tool,enum oe_flush how);void ordered_events__init (struct ordered_events *oe);void ordered_events__free (struct ordered_events *oe);
tools/perf/util/session.c +26 -11
@@ -512,7 +512,11 @@ static int process_finished_round(struct perf_tool *tool,union perf_event *event__maybe_unused , struct perf_session *session) { - return ordered_events__flush(session, tool, OE_FLUSH__ROUND); + struct ordered_events *oe = &session->ordered_events; +struct perf_evlist *evlist = session->evlist; +struct machines *machines = &session->machines; + +return ordered_events__flush (oe, machines, evlist, tool,OE_FLUSH__ROUND ); } int perf_session_queue_event(struct perf_session *s, union perf_event *event,
@@ -520,6 +524,9 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event, u64 file_offset) {struct ordered_events *oe = &s->ordered_events; +struct perf_evlist *evlist = s->evlist; +struct machines *machines = &s->machines; +u64 timestamp = sample->time;struct ordered_event *new;
@@ -536,7 +543,7 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event, new =ordered_events__new (oe, timestamp, event);if (!new) { -ordered_events__flush (s, tool,OE_FLUSH__HALF ); +ordered_events__flush (oe, machines, evlist, tool,OE_FLUSH__HALF ); new =ordered_events__new (oe, timestamp, event); }
@@ -886,12 +893,12 @@ static int &sample->read.one, machine); } -int perf_session__deliver_event (struct perf_session *session, +int machines__deliver_event (struct machines *machines, +struct perf_evlist *evlist,union perf_event *event,struct perf_sample *sample,struct perf_tool *tool,u64 file_offset) { -struct perf_evlist *evlist = session->evlist;struct perf_evsel *evsel;struct machine *machine;
@@ -899,7 +906,7 @@ int perf_session__deliver_event(struct perf_session *session, evsel =perf_evlist__id2evsel (evlist, sample->id); - machine =machines__find_for_cpumode (&session->machines, event, sample); + machine =machines__find_for_cpumode (machines, event, sample);switch (event->header.type) {case PERF_RECORD_SAMPLE :
@@ -984,12 +991,14 @@ int perf_session__deliver_synth_event(struct perf_session *session,struct perf_sample *sample, struct perf_tool *tool) { - events_stats__inc(&session->evlist->stats, event->header.type); + struct perf_evlist *evlist = session->evlist; + +events_stats__inc (&evlist->stats, event->header.type);if (event->header.type >=PERF_RECORD_USER_TYPE_START )return perf_session__process_user_event (session, event, tool,0 ); -return perf_session__deliver_event (session, event, sample, tool,0 ); +return machines__deliver_event (&session->machines, evlist, event, sample, tool,0 ); }static void event_swap (union perf_event *event,bool sample_id_all)
@@ -1090,8 +1099,8 @@ static s64 perf_session__process_event(struct perf_session *session,return ret; } -return perf_session__deliver_event (session, event, &sample, tool, - file_offset); +return machines__deliver_event (&session->machines, evlist, event, + &sample, tool, file_offset); }void perf_event_header__bswap (struct perf_event_header *hdr)
@@ -1167,6 +1176,9 @@ volatile int session_done;static int __perf_session__process_pipe_events (struct perf_session *session,struct perf_tool *tool) { +struct ordered_events *oe = &session->ordered_events; +struct perf_evlist *evlist = session->evlist; +struct machines *machines = &session->machines;int fd =perf_data_file__fd (session->file);union perf_event *event;uint32_t size, cur_size =0 ;
@@ -1246,7 +1258,7 @@ more: goto more; done:/* do the final flush for ordered samples */ - err =ordered_events__flush (session, tool,OE_FLUSH__FINAL ); + err =ordered_events__flush (oe, machines, evlist, tool,OE_FLUSH__FINAL ); out_err:free (buf);perf_tool__warn_about_errors (tool, &session->evlist->stats);
@@ -1298,6 +1310,9 @@ static int __perf_session__process_events(struct perf_session *session, u64 data_offset, u64 data_size, u64 file_size, struct perf_tool *tool) { + struct ordered_events *oe = &session->ordered_events; +struct perf_evlist *evlist = session->evlist; +struct machines *machines = &session->machines;int fd =perf_data_file__fd (session->file);u64 head, page_offset, file_offset, file_pos, size;int err, mmap_prot, mmap_flags, map_idx =0 ;
@@ -1391,7 +1406,7 @@ more: out:/* do the final flush for ordered samples */ - err =ordered_events__flush (session, tool,OE_FLUSH__FINAL ); + err =ordered_events__flush (oe, machines, evlist, tool,OE_FLUSH__FINAL ); out_err:ui_progress__finish ();perf_tool__warn_about_errors (tool, &session->evlist->stats);
tools/perf/util/session.h +2 -1
@@ -57,7 +57,8 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,void perf_tool__fill_defaults (struct perf_tool *tool); -int perf_session__deliver_event (struct perf_session *session, +int machines__deliver_event (struct machines *machines, +struct perf_evlist *evlist,union perf_event *event,struct perf_sample *sample,struct perf_tool *tool,u64 file_offset);