diff options
author | Takashi Iwai <tiwai@suse.de> | 2013-10-19 22:31:14 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2013-10-19 22:31:14 +0200 |
commit | 20c87bd40e6c1ff7e31cc5eea4fb37829a57eb58 (patch) | |
tree | 528c2f113e428e060e185ccab7eab8d8e87c7d36 /tools/perf/util/session.c | |
parent | d14df339c72b6efbba4eddd1d1f3f4b173273f74 (diff) | |
parent | 40f8989695660dee984338861ca9900b8e0b5183 (diff) | |
download | linux-20c87bd40e6c1ff7e31cc5eea4fb37829a57eb58.tar.gz linux-20c87bd40e6c1ff7e31cc5eea4fb37829a57eb58.tar.bz2 linux-20c87bd40e6c1ff7e31cc5eea4fb37829a57eb58.zip |
Merge tag 'asoc-v3.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v3.12
A number of small, fairly unexciting, fixes for drivers - nothing stand
out.
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 51f5edf2a6d0..568b750c01f6 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -256,6 +256,8 @@ void perf_tool__fill_defaults(struct perf_tool *tool) tool->sample = process_event_sample_stub; if (tool->mmap == NULL) tool->mmap = process_event_stub; + if (tool->mmap2 == NULL) + tool->mmap2 = process_event_stub; if (tool->comm == NULL) tool->comm = process_event_stub; if (tool->fork == NULL) @@ -531,6 +533,9 @@ static int flush_sample_queue(struct perf_session *s, return 0; list_for_each_entry_safe(iter, tmp, head, list) { + if (session_done()) + return 0; + if (iter->timestamp > limit) break; @@ -1160,7 +1165,6 @@ static void perf_session__warn_about_errors(const struct perf_session *session, } } -#define session_done() (*(volatile int *)(&session_done)) volatile int session_done; static int __perf_session__process_pipe_events(struct perf_session *self, @@ -1308,7 +1312,7 @@ int __perf_session__process_events(struct perf_session *session, file_offset = page_offset; head = data_offset - page_offset; - if (data_offset + data_size < file_size) + if (data_size && (data_offset + data_size < file_size)) file_size = data_offset + data_size; progress_next = file_size / 16; @@ -1372,10 +1376,13 @@ more: "Processing events..."); } + err = 0; + if (session_done()) + goto out_err; + if (file_pos < file_size) goto more; - err = 0; /* do the final flush for ordered samples */ session->ordered_samples.next_flush = ULLONG_MAX; err = flush_sample_queue(session, tool); |