diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2013-08-27 04:23:09 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-08-29 15:09:31 -0400 |
commit | 75562573bab35b129cfd342fc2bcf89da84a6644 (patch) | |
tree | b7dfa219d1a73560ce95639b7291f377645497ba /tools/perf/util/evsel.h | |
parent | faf967068e8c4d8df52f01f9361241101b3065a0 (diff) |
perf tools: Add support for PERF_SAMPLE_IDENTIFIER
Enable parsing of samples with sample format bit PERF_SAMPLE_IDENTIFIER.
In addition, if the kernel supports it, prefer it to selecting
PERF_SAMPLE_ID thereby allowing non-matching sample types.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1377591794-30553-8-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/evsel.h')
-rw-r--r-- | tools/perf/util/evsel.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 532a5f925da0..4a7bdc713bab 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h | |||
@@ -48,6 +48,12 @@ struct perf_sample_id { | |||
48 | * @name - Can be set to retain the original event name passed by the user, | 48 | * @name - Can be set to retain the original event name passed by the user, |
49 | * so that when showing results in tools such as 'perf stat', we | 49 | * so that when showing results in tools such as 'perf stat', we |
50 | * show the name used, not some alias. | 50 | * show the name used, not some alias. |
51 | * @id_pos: the position of the event id (PERF_SAMPLE_ID or | ||
52 | * PERF_SAMPLE_IDENTIFIER) in a sample event i.e. in the array of | ||
53 | * struct sample_event | ||
54 | * @is_pos: the position (counting backwards) of the event id (PERF_SAMPLE_ID or | ||
55 | * PERF_SAMPLE_IDENTIFIER) in a non-sample event i.e. if sample_id_all | ||
56 | * is used there is an id sample appended to non-sample events | ||
51 | */ | 57 | */ |
52 | struct perf_evsel { | 58 | struct perf_evsel { |
53 | struct list_head node; | 59 | struct list_head node; |
@@ -74,6 +80,8 @@ struct perf_evsel { | |||
74 | } handler; | 80 | } handler; |
75 | struct cpu_map *cpus; | 81 | struct cpu_map *cpus; |
76 | unsigned int sample_size; | 82 | unsigned int sample_size; |
83 | int id_pos; | ||
84 | int is_pos; | ||
77 | bool supported; | 85 | bool supported; |
78 | bool needs_swap; | 86 | bool needs_swap; |
79 | /* parse modifier helper */ | 87 | /* parse modifier helper */ |
@@ -104,6 +112,9 @@ void perf_evsel__delete(struct perf_evsel *evsel); | |||
104 | void perf_evsel__config(struct perf_evsel *evsel, | 112 | void perf_evsel__config(struct perf_evsel *evsel, |
105 | struct perf_record_opts *opts); | 113 | struct perf_record_opts *opts); |
106 | 114 | ||
115 | int __perf_evsel__sample_size(u64 sample_type); | ||
116 | void perf_evsel__calc_id_pos(struct perf_evsel *evsel); | ||
117 | |||
107 | bool perf_evsel__is_cache_op_valid(u8 type, u8 op); | 118 | bool perf_evsel__is_cache_op_valid(u8 type, u8 op); |
108 | 119 | ||
109 | #define PERF_EVSEL__MAX_ALIASES 8 | 120 | #define PERF_EVSEL__MAX_ALIASES 8 |
@@ -142,7 +153,8 @@ void __perf_evsel__reset_sample_bit(struct perf_evsel *evsel, | |||
142 | #define perf_evsel__reset_sample_bit(evsel, bit) \ | 153 | #define perf_evsel__reset_sample_bit(evsel, bit) \ |
143 | __perf_evsel__reset_sample_bit(evsel, PERF_SAMPLE_##bit) | 154 | __perf_evsel__reset_sample_bit(evsel, PERF_SAMPLE_##bit) |
144 | 155 | ||
145 | void perf_evsel__set_sample_id(struct perf_evsel *evsel); | 156 | void perf_evsel__set_sample_id(struct perf_evsel *evsel, |
157 | bool use_sample_identifier); | ||
146 | 158 | ||
147 | int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads, | 159 | int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads, |
148 | const char *filter); | 160 | const char *filter); |