perf ordered_events: Adopt queue() method
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 4a6b362f36e68618ee4d3cdb361d05a5e80af023 Gitweb: http://git.kernel.org/tip/4a6b362f36e68618ee4d3cdb361d05a5e80af023 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 3 Mar 2015 13:02:24 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 12 Mar 2015 12:39:51 -0300
perf ordered_events: Adopt queue() method
Quoted 1 line
From
perf_session, will be used in 'trace'.
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 | 34 ++++++++++++++++++++++++++++++++-- tools/perf/util/ordered-events.h | 4 ++-- tools/perf/util/session.c | 28 +--------------------------- 3 files changed, 35 insertions(+), 31 deletions(-)
tools/perf/util/ordered-events.c +32 -2
@@ -131,8 +131,8 @@ static struct ordered_event *alloc_event(struct ordered_events *oe,return new; } -struct ordered_event * -ordered_events__new (struct ordered_events *oe,u64 timestamp, +static struct ordered_event * +ordered_events__new_event (struct ordered_events *oe,u64 timestamp,union perf_event *event) {struct ordered_event *new;
@@ -153,6 +153,36 @@ void ordered_events__delete(struct ordered_events *oe, struct ordered_event *evefree_dup_event (oe, event->event); } +int ordered_events__queue (struct ordered_events *oe,union perf_event *event, +struct perf_sample *sample,u64 file_offset) +{ +u64 timestamp = sample->time; +struct ordered_event *oevent; + +if (!timestamp || timestamp == ~0ULL ) +return -ETIME ; + +if (timestamp < oe->last_flush) { +pr_oe_time (timestamp,"out of order event\n" ); +pr_oe_time (oe->last_flush,"last flush, last_flush_type %d\n" , + oe->last_flush_type); + + oe->evlist->stats.nr_unordered_events++; + } + + oevent =ordered_events__new_event (oe, timestamp, event); +if (!oevent) { +ordered_events__flush (oe,OE_FLUSH__HALF ); + oevent =ordered_events__new_event (oe, timestamp, event); + } + +if (!oevent) +return -ENOMEM ; + + oevent->file_offset = file_offset; +return 0 ; +} +static int __ordered_events__flush (struct ordered_events *oe) {struct list_head *head = &oe->events;
tools/perf/util/ordered-events.h +2 -2
@@ -49,8 +49,8 @@ struct ordered_events {bool copy_on_queue; }; -struct ordered_event *ordered_events__new (struct ordered_events *oe,u64 timestamp, -union perf_event *event); +int ordered_events__queue (struct ordered_events *oe,union perf_event *event, +struct perf_sample *sample,u64 file_offset);void ordered_events__delete (struct ordered_events *oe,struct ordered_event *event);int ordered_events__flush (struct ordered_events *oe,enum oe_flush how); void ordered_events__init(struct ordered_events *oe, struct machines *machines,
tools/perf/util/session.c +1 -27
@@ -541,33 +541,7 @@ static int process_finished_round(struct perf_tool *tool __maybe_unused,int perf_session__queue_event (struct perf_session *s,union perf_event *event,struct perf_sample *sample,u64 file_offset) { -struct ordered_events *oe = &s->ordered_events; - -u64 timestamp = sample->time; -struct ordered_event *new; - -if (!timestamp || timestamp == ~0ULL ) -return -ETIME ; - -if (timestamp < oe->last_flush) { -pr_oe_time (timestamp,"out of order event\n" ); -pr_oe_time (oe->last_flush,"last flush, last_flush_type %d\n" , - oe->last_flush_type); - - s->evlist->stats.nr_unordered_events++; - } - - new =ordered_events__new (oe, timestamp, event); -if (!new) { -ordered_events__flush (oe,OE_FLUSH__HALF ); - new =ordered_events__new (oe, timestamp, event); - } - -if (!new) -return -ENOMEM ; - - new->file_offset = file_offset; -return 0 ; +return ordered_events__queue (&s->ordered_events, event, sample, file_offset); }static void callchain__lbr_callstack_printf (struct perf_sample *sample)