diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-12-10 12:53:43 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-12-10 12:53:43 -0500 |
commit | 7be5ebe8767eaa482e18f566de5f56c1519abf59 (patch) | |
tree | 353f1845712fbe56ac6990dbc8fb83e07dc6e06a /tools/perf/util/evsel.h | |
parent | 3f067dcab711c2df7eefcfc5b3aa9a0e2b5f7d42 (diff) |
perf evsel: Update sample_size when setting sample_type bits
We use evsel->sample_size to detect underflows in
perf_evsel__parse_sample, but we were failing to update it after
perf_evsel__init(), i.e. when we decide, after creating an evsel, that
we want some extra field bit set.
Fix it by introducing methods to set a bit that will take care of
correctly adjusting evsel->sample_size.
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
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/n/tip-2ny5pzsing0dcth7hws48x9c@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.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 | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 3f7ff471de2b..739853969243 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h | |||
@@ -118,6 +118,17 @@ void perf_evsel__free_fd(struct perf_evsel *evsel); | |||
118 | void perf_evsel__free_id(struct perf_evsel *evsel); | 118 | void perf_evsel__free_id(struct perf_evsel *evsel); |
119 | void perf_evsel__close_fd(struct perf_evsel *evsel, int ncpus, int nthreads); | 119 | void perf_evsel__close_fd(struct perf_evsel *evsel, int ncpus, int nthreads); |
120 | 120 | ||
121 | void __perf_evsel__set_sample_bit(struct perf_evsel *evsel, | ||
122 | enum perf_event_sample_format bit); | ||
123 | void __perf_evsel__reset_sample_bit(struct perf_evsel *evsel, | ||
124 | enum perf_event_sample_format bit); | ||
125 | |||
126 | #define perf_evsel__set_sample_bit(evsel, bit) \ | ||
127 | __perf_evsel__set_sample_bit(evsel, PERF_SAMPLE_##bit) | ||
128 | |||
129 | #define perf_evsel__reset_sample_bit(evsel, bit) \ | ||
130 | __perf_evsel__reset_sample_bit(evsel, PERF_SAMPLE_##bit) | ||
131 | |||
121 | int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads, | 132 | int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads, |
122 | const char *filter); | 133 | const char *filter); |
123 | 134 | ||