diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 12:25:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 12:25:52 -0400 |
commit | 19504828b4bee5e471bcd35e214bc6fd0d380692 (patch) | |
tree | 30d4ffb6783daf9fadd47548c035646d3f0f073e /tools/perf/util/event.c | |
parent | 57d19e80f459dd845fb3cfeba8e6df8471bac142 (diff) | |
parent | 3cb6d1540880e767d911b79eb49578de2190f428 (diff) |
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf tools: Fix sample size bit operations
perf tools: Fix ommitted mmap data update on remap
watchdog: Change the default timeout and configure nmi watchdog period based on watchdog_thresh
watchdog: Disable watchdog when thresh is zero
watchdog: Only disable/enable watchdog if neccessary
watchdog: Fix rounding bug in get_sample_period()
perf tools: Propagate event parse error handling
perf tools: Robustify dynamic sample content fetch
perf tools: Pre-check sample size before parsing
perf tools: Move evlist sample helpers to evlist area
perf tools: Remove junk code in mmap size handling
perf tools: Check we are able to read the event size on mmap
Diffstat (limited to 'tools/perf/util/event.c')
-rw-r--r-- | tools/perf/util/event.c | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 1023f67633a4..252b72a5e59e 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
@@ -9,21 +9,21 @@ | |||
9 | #include "thread_map.h" | 9 | #include "thread_map.h" |
10 | 10 | ||
11 | static const char *perf_event__names[] = { | 11 | static const char *perf_event__names[] = { |
12 | [0] = "TOTAL", | 12 | [0] = "TOTAL", |
13 | [PERF_RECORD_MMAP] = "MMAP", | 13 | [PERF_RECORD_MMAP] = "MMAP", |
14 | [PERF_RECORD_LOST] = "LOST", | 14 | [PERF_RECORD_LOST] = "LOST", |
15 | [PERF_RECORD_COMM] = "COMM", | 15 | [PERF_RECORD_COMM] = "COMM", |
16 | [PERF_RECORD_EXIT] = "EXIT", | 16 | [PERF_RECORD_EXIT] = "EXIT", |
17 | [PERF_RECORD_THROTTLE] = "THROTTLE", | 17 | [PERF_RECORD_THROTTLE] = "THROTTLE", |
18 | [PERF_RECORD_UNTHROTTLE] = "UNTHROTTLE", | 18 | [PERF_RECORD_UNTHROTTLE] = "UNTHROTTLE", |
19 | [PERF_RECORD_FORK] = "FORK", | 19 | [PERF_RECORD_FORK] = "FORK", |
20 | [PERF_RECORD_READ] = "READ", | 20 | [PERF_RECORD_READ] = "READ", |
21 | [PERF_RECORD_SAMPLE] = "SAMPLE", | 21 | [PERF_RECORD_SAMPLE] = "SAMPLE", |
22 | [PERF_RECORD_HEADER_ATTR] = "ATTR", | 22 | [PERF_RECORD_HEADER_ATTR] = "ATTR", |
23 | [PERF_RECORD_HEADER_EVENT_TYPE] = "EVENT_TYPE", | 23 | [PERF_RECORD_HEADER_EVENT_TYPE] = "EVENT_TYPE", |
24 | [PERF_RECORD_HEADER_TRACING_DATA] = "TRACING_DATA", | 24 | [PERF_RECORD_HEADER_TRACING_DATA] = "TRACING_DATA", |
25 | [PERF_RECORD_HEADER_BUILD_ID] = "BUILD_ID", | 25 | [PERF_RECORD_HEADER_BUILD_ID] = "BUILD_ID", |
26 | [PERF_RECORD_FINISHED_ROUND] = "FINISHED_ROUND", | 26 | [PERF_RECORD_FINISHED_ROUND] = "FINISHED_ROUND", |
27 | }; | 27 | }; |
28 | 28 | ||
29 | const char *perf_event__name(unsigned int id) | 29 | const char *perf_event__name(unsigned int id) |
@@ -35,6 +35,22 @@ const char *perf_event__name(unsigned int id) | |||
35 | return perf_event__names[id]; | 35 | return perf_event__names[id]; |
36 | } | 36 | } |
37 | 37 | ||
38 | int perf_sample_size(u64 sample_type) | ||
39 | { | ||
40 | u64 mask = sample_type & PERF_SAMPLE_MASK; | ||
41 | int size = 0; | ||
42 | int i; | ||
43 | |||
44 | for (i = 0; i < 64; i++) { | ||
45 | if (mask & (1UL << i)) | ||
46 | size++; | ||
47 | } | ||
48 | |||
49 | size *= sizeof(u64); | ||
50 | |||
51 | return size; | ||
52 | } | ||
53 | |||
38 | static struct perf_sample synth_sample = { | 54 | static struct perf_sample synth_sample = { |
39 | .pid = -1, | 55 | .pid = -1, |
40 | .tid = -1, | 56 | .tid = -1, |