diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-05-21 17:53:06 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-05-21 17:53:46 +0200 |
commit | f80836c86ebd44bf8f90882283a1618e09dfaed2 (patch) | |
tree | be28455ff20df71fcebc3e59b2575721ab099ba3 /kernel/trace/trace_event_perf.c | |
parent | 598357eba6a55d27ddc7ead80ebb83fe1aad9b83 (diff) | |
parent | ff5f149b6aec8edbfa3698721667acd043009a33 (diff) | |
download | linux-f80836c86ebd44bf8f90882283a1618e09dfaed2.tar.gz linux-f80836c86ebd44bf8f90882283a1618e09dfaed2.tar.bz2 linux-f80836c86ebd44bf8f90882283a1618e09dfaed2.zip |
Merge branch 'tip/tracing/core-7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
Diffstat (limited to 'kernel/trace/trace_event_perf.c')
-rw-r--r-- | kernel/trace/trace_event_perf.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index 39d5ea7b0653..26b8607a0abc 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c @@ -56,7 +56,13 @@ static int perf_trace_event_init(struct ftrace_event_call *tp_event, } } - ret = tp_event->perf_event_enable(tp_event); + if (tp_event->class->reg) + ret = tp_event->class->reg(tp_event, TRACE_REG_PERF_REGISTER); + else + ret = tracepoint_probe_register(tp_event->name, + tp_event->class->perf_probe, + tp_event); + if (ret) goto fail; @@ -89,7 +95,8 @@ int perf_trace_init(struct perf_event *p_event) mutex_lock(&event_mutex); list_for_each_entry(tp_event, &ftrace_events, list) { - if (tp_event->id == event_id && tp_event->perf_event_enable && + if (tp_event->event.type == event_id && + tp_event->class && tp_event->class->perf_probe && try_module_get(tp_event->mod)) { ret = perf_trace_event_init(tp_event, p_event); break; @@ -128,7 +135,12 @@ void perf_trace_destroy(struct perf_event *p_event) if (--tp_event->perf_refcount > 0) return; - tp_event->perf_event_disable(tp_event); + if (tp_event->class->reg) + tp_event->class->reg(tp_event, TRACE_REG_PERF_UNREGISTER); + else + tracepoint_probe_unregister(tp_event->name, + tp_event->class->perf_probe, + tp_event); free_percpu(tp_event->perf_events); tp_event->perf_events = NULL; |