summaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_event_perf.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2010-05-21 17:53:06 +0200
committerIngo Molnar <mingo@elte.hu>2010-05-21 17:53:46 +0200
commitf80836c86ebd44bf8f90882283a1618e09dfaed2 (patch)
treebe28455ff20df71fcebc3e59b2575721ab099ba3 /kernel/trace/trace_event_perf.c
parent598357eba6a55d27ddc7ead80ebb83fe1aad9b83 (diff)
parentff5f149b6aec8edbfa3698721667acd043009a33 (diff)
downloadop-kernel-dev-f80836c86ebd44bf8f90882283a1618e09dfaed2.zip
op-kernel-dev-f80836c86ebd44bf8f90882283a1618e09dfaed2.tar.gz
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.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c
index 39d5ea7..26b8607 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;
OpenPOWER on IntegriCloud