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 | |
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')
-rw-r--r-- | tools/perf/util/session.c | 16 | ||||
-rw-r--r-- | tools/perf/util/session.h | 3 |
2 files changed, 7 insertions, 12 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 60eab8b3ff3..bc84a521795 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 | } |
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h index a6951d2f700..5771ccb3fe0 100644 --- a/tools/perf/util/session.h +++ b/tools/perf/util/session.h | |||
@@ -40,7 +40,6 @@ struct perf_event_ops { | |||
40 | event_op process_read_event; | 40 | event_op process_read_event; |
41 | event_op process_throttle_event; | 41 | event_op process_throttle_event; |
42 | event_op process_unthrottle_event; | 42 | event_op process_unthrottle_event; |
43 | int (*sample_type_check)(struct perf_session *session); | ||
44 | unsigned long total_unknown; | 43 | unsigned long total_unknown; |
45 | bool full_paths; | 44 | bool full_paths; |
46 | }; | 45 | }; |
@@ -56,7 +55,7 @@ struct symbol **perf_session__resolve_callchain(struct perf_session *self, | |||
56 | struct ip_callchain *chain, | 55 | struct ip_callchain *chain, |
57 | struct symbol **parent); | 56 | struct symbol **parent); |
58 | 57 | ||
59 | int perf_session__has_traces(struct perf_session *self); | 58 | bool perf_session__has_traces(struct perf_session *self, const char *msg); |
60 | 59 | ||
61 | int perf_header__read_build_ids(int input, u64 offset, u64 file_size); | 60 | int perf_header__read_build_ids(int input, u64 offset, u64 file_size); |
62 | 61 | ||