diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2010-05-19 08:02:22 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-05-21 05:37:56 -0400 |
commit | 1c024eca51fdc965290acf342ae16a476c2189d0 (patch) | |
tree | 28dc160cc70a20eeb8b8825d6d52ea88a6188413 /include/linux/perf_event.h | |
parent | b7e2ecef92d2e7785e6d76b41e5ba8bcbc45259d (diff) |
perf, trace: Optimize tracepoints by using per-tracepoint-per-cpu hlist to track events
Avoid the swevent hash-table by using per-tracepoint
hlists.
Also, avoid conditionals on the fast path by ordering
with probe unregister so that we should never get on
the callback path without the data being there.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <20100521090710.473188012@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/perf_event.h')
-rw-r--r-- | include/linux/perf_event.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index fe50347dc645..7cd7b356447d 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
@@ -727,6 +727,7 @@ struct perf_event { | |||
727 | perf_overflow_handler_t overflow_handler; | 727 | perf_overflow_handler_t overflow_handler; |
728 | 728 | ||
729 | #ifdef CONFIG_EVENT_TRACING | 729 | #ifdef CONFIG_EVENT_TRACING |
730 | struct ftrace_event_call *tp_event; | ||
730 | struct event_filter *filter; | 731 | struct event_filter *filter; |
731 | #endif | 732 | #endif |
732 | 733 | ||
@@ -992,8 +993,9 @@ static inline bool perf_paranoid_kernel(void) | |||
992 | } | 993 | } |
993 | 994 | ||
994 | extern void perf_event_init(void); | 995 | extern void perf_event_init(void); |
995 | extern void perf_tp_event(int event_id, u64 addr, u64 count, void *record, | 996 | extern void perf_tp_event(u64 addr, u64 count, void *record, |
996 | int entry_size, struct pt_regs *regs, void *event); | 997 | int entry_size, struct pt_regs *regs, |
998 | struct hlist_head *head); | ||
997 | extern void perf_bp_event(struct perf_event *event, void *data); | 999 | extern void perf_bp_event(struct perf_event *event, void *data); |
998 | 1000 | ||
999 | #ifndef perf_misc_flags | 1001 | #ifndef perf_misc_flags |