diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2009-12-27 18:37:02 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-12-28 03:03:34 -0500 |
commit | d549c7690190d9739005e19604faad6da4b802ac (patch) | |
tree | 1a03376ecc41ecd9495298ed3ad34f72da7ecea0 /tools/perf/util/session.c | |
parent | 27295592c22e71bbd38110c302da8dbb43912a60 (diff) |
perf session: Remove sample_type_check from event_ops
This is really something tools need to do before asking for the
events to be processed, leaving perf_session__process_events to
do just that, process events.
Also add a msg parameter to perf_session__has_traces() so that
the right message can be printed, fixing a regression added by
me in the previous cset (right timechart message) and also
fixing 'perf kmem', that was not asking if 'perf kmem record'
was ran.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1261957026-15580-6-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 60eab8b3ff34..bc84a5217955 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -73,6 +73,8 @@ struct perf_session *perf_session__new(const char *filename, int mode, bool forc | |||
73 | 73 | ||
74 | if (mode == O_RDONLY && perf_session__open(self, force) < 0) | 74 | if (mode == O_RDONLY && perf_session__open(self, force) < 0) |
75 | goto out_delete; | 75 | goto out_delete; |
76 | |||
77 | self->sample_type = perf_header__sample_type(&self->header); | ||
76 | out: | 78 | out: |
77 | return self; | 79 | return self; |
78 | out_free: | 80 | out_free: |
@@ -302,11 +304,6 @@ int perf_session__process_events(struct perf_session *self, | |||
302 | page_size = getpagesize(); | 304 | page_size = getpagesize(); |
303 | 305 | ||
304 | head = self->header.data_offset; | 306 | head = self->header.data_offset; |
305 | self->sample_type = perf_header__sample_type(&self->header); | ||
306 | |||
307 | err = -EINVAL; | ||
308 | if (ops->sample_type_check && ops->sample_type_check(self) < 0) | ||
309 | goto out_err; | ||
310 | 307 | ||
311 | if (!ops->full_paths) { | 308 | if (!ops->full_paths) { |
312 | char bf[PATH_MAX]; | 309 | char bf[PATH_MAX]; |
@@ -394,13 +391,12 @@ out_err: | |||
394 | return err; | 391 | return err; |
395 | } | 392 | } |
396 | 393 | ||
397 | int perf_session__has_traces(struct perf_session *self) | 394 | bool perf_session__has_traces(struct perf_session *self, const char *msg) |
398 | { | 395 | { |
399 | if (!(self->sample_type & PERF_SAMPLE_RAW)) { | 396 | if (!(self->sample_type & PERF_SAMPLE_RAW)) { |
400 | pr_err("No trace sample to read. Did you call perf record " | 397 | pr_err("No trace sample to read. Did you call 'perf %s'?\n", msg); |
401 | "without -R?"); | 398 | return false; |
402 | return -1; | ||
403 | } | 399 | } |
404 | 400 | ||
405 | return 0; | 401 | return true; |
406 | } | 402 | } |