2009-03-20 03:26:15 +08:00
|
|
|
/*
|
|
|
|
* trace event based perf counter profiling
|
|
|
|
*
|
|
|
|
* Copyright (C) 2009 Red Hat Inc, Peter Zijlstra <pzijlstr@redhat.com>
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "trace.h"
|
|
|
|
|
|
|
|
int ftrace_profile_enable(int event_id)
|
|
|
|
{
|
|
|
|
struct ftrace_event_call *event;
|
2009-05-06 10:33:45 +08:00
|
|
|
int ret = -EINVAL;
|
2009-03-20 03:26:15 +08:00
|
|
|
|
2009-05-06 10:33:45 +08:00
|
|
|
mutex_lock(&event_mutex);
|
2009-04-11 01:52:20 +08:00
|
|
|
list_for_each_entry(event, &ftrace_events, list) {
|
2009-08-06 02:41:04 +08:00
|
|
|
if (event->id == event_id && event->profile_enable) {
|
2009-05-06 10:33:45 +08:00
|
|
|
ret = event->profile_enable(event);
|
|
|
|
break;
|
|
|
|
}
|
2009-03-20 03:26:15 +08:00
|
|
|
}
|
2009-05-06 10:33:45 +08:00
|
|
|
mutex_unlock(&event_mutex);
|
2009-03-20 03:26:15 +08:00
|
|
|
|
2009-05-06 10:33:45 +08:00
|
|
|
return ret;
|
2009-03-20 03:26:15 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void ftrace_profile_disable(int event_id)
|
|
|
|
{
|
|
|
|
struct ftrace_event_call *event;
|
|
|
|
|
2009-05-06 10:33:45 +08:00
|
|
|
mutex_lock(&event_mutex);
|
2009-04-11 01:52:20 +08:00
|
|
|
list_for_each_entry(event, &ftrace_events, list) {
|
2009-05-06 10:33:45 +08:00
|
|
|
if (event->id == event_id) {
|
|
|
|
event->profile_disable(event);
|
|
|
|
break;
|
|
|
|
}
|
2009-03-20 03:26:15 +08:00
|
|
|
}
|
2009-05-06 10:33:45 +08:00
|
|
|
mutex_unlock(&event_mutex);
|
2009-03-20 03:26:15 +08:00
|
|
|
}
|