aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2013-09-01 06:36:15 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-10-09 10:39:18 -0400
commitdd96c46b5c765a779d8c35cc7d1df7515b4c7baf (patch)
tree43a24b70c0f40c0fe180116a8ba95617e8c68506
parentb22d54b09a5448d3706929c6f0eae36429f4ec5d (diff)
perf tools: Adding throttle event data struct support
Moving 'struct throttle_event' out of python code and making it global as any other event. There's no usage of throttling events in any perf commands so far (besides python support), but we'll need this event data backup for upcoming test. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1378031796-17892-5-git-send-email-jolsa@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/util/event.h7
-rw-r--r--tools/perf/util/python.c7
-rw-r--r--tools/perf/util/session.c13
3 files changed, 20 insertions, 7 deletions
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 17d9e167a7b9..9b7d4d333111 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -61,6 +61,12 @@ struct read_event {
61 u64 id; 61 u64 id;
62}; 62};
63 63
64struct throttle_event {
65 struct perf_event_header header;
66 u64 time;
67 u64 id;
68 u64 stream_id;
69};
64 70
65#define PERF_SAMPLE_MASK \ 71#define PERF_SAMPLE_MASK \
66 (PERF_SAMPLE_IP | PERF_SAMPLE_TID | \ 72 (PERF_SAMPLE_IP | PERF_SAMPLE_TID | \
@@ -178,6 +184,7 @@ union perf_event {
178 struct fork_event fork; 184 struct fork_event fork;
179 struct lost_event lost; 185 struct lost_event lost;
180 struct read_event read; 186 struct read_event read;
187 struct throttle_event throttle;
181 struct sample_event sample; 188 struct sample_event sample;
182 struct attr_event attr; 189 struct attr_event attr;
183 struct event_type_event event_type; 190 struct event_type_event event_type;
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index a24ce0a6a941..06efd027b1db 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -33,13 +33,6 @@ int eprintf(int level, const char *fmt, ...)
33# define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size, 33# define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
34#endif 34#endif
35 35
36struct throttle_event {
37 struct perf_event_header header;
38 u64 time;
39 u64 id;
40 u64 stream_id;
41};
42
43PyMODINIT_FUNC initperf(void); 36PyMODINIT_FUNC initperf(void);
44 37
45#define member_def(type, member, ptype, help) \ 38#define member_def(type, member, ptype, help) \
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index b97f468af955..d1e449534b33 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -397,6 +397,17 @@ static void perf_event__read_swap(union perf_event *event, bool sample_id_all)
397 swap_sample_id_all(event, &event->read + 1); 397 swap_sample_id_all(event, &event->read + 1);
398} 398}
399 399
400static void perf_event__throttle_swap(union perf_event *event,
401 bool sample_id_all)
402{
403 event->throttle.time = bswap_64(event->throttle.time);
404 event->throttle.id = bswap_64(event->throttle.id);
405 event->throttle.stream_id = bswap_64(event->throttle.stream_id);
406
407 if (sample_id_all)
408 swap_sample_id_all(event, &event->throttle + 1);
409}
410
400static u8 revbyte(u8 b) 411static u8 revbyte(u8 b)
401{ 412{
402 int rev = (b >> 4) | ((b & 0xf) << 4); 413 int rev = (b >> 4) | ((b & 0xf) << 4);
@@ -482,6 +493,8 @@ static perf_event__swap_op perf_event__swap_ops[] = {
482 [PERF_RECORD_EXIT] = perf_event__task_swap, 493 [PERF_RECORD_EXIT] = perf_event__task_swap,
483 [PERF_RECORD_LOST] = perf_event__all64_swap, 494 [PERF_RECORD_LOST] = perf_event__all64_swap,
484 [PERF_RECORD_READ] = perf_event__read_swap, 495 [PERF_RECORD_READ] = perf_event__read_swap,
496 [PERF_RECORD_THROTTLE] = perf_event__throttle_swap,
497 [PERF_RECORD_UNTHROTTLE] = perf_event__throttle_swap,
485 [PERF_RECORD_SAMPLE] = perf_event__all64_swap, 498 [PERF_RECORD_SAMPLE] = perf_event__all64_swap,
486 [PERF_RECORD_HEADER_ATTR] = perf_event__hdr_attr_swap, 499 [PERF_RECORD_HEADER_ATTR] = perf_event__hdr_attr_swap,
487 [PERF_RECORD_HEADER_EVENT_TYPE] = perf_event__event_type_swap, 500 [PERF_RECORD_HEADER_EVENT_TYPE] = perf_event__event_type_swap,