blob: 5b5895afecfe425f5c917af29b13d29ff4acf918 [file] [log] [blame]
Peter Zijlstraac199db2009-03-19 20:26:15 +01001/*
2 * trace event based perf counter profiling
3 *
4 * Copyright (C) 2009 Red Hat Inc, Peter Zijlstra <pzijlstr@redhat.com>
5 *
6 */
7
8#include "trace.h"
9
10int ftrace_profile_enable(int event_id)
11{
12 struct ftrace_event_call *event;
Li Zefan20c89282009-05-06 10:33:45 +080013 int ret = -EINVAL;
Peter Zijlstraac199db2009-03-19 20:26:15 +010014
Li Zefan20c89282009-05-06 10:33:45 +080015 mutex_lock(&event_mutex);
Steven Rostedta59fd602009-04-10 13:52:20 -040016 list_for_each_entry(event, &ftrace_events, list) {
Li Zefan20c89282009-05-06 10:33:45 +080017 if (event->id == event_id) {
18 ret = event->profile_enable(event);
19 break;
20 }
Peter Zijlstraac199db2009-03-19 20:26:15 +010021 }
Li Zefan20c89282009-05-06 10:33:45 +080022 mutex_unlock(&event_mutex);
Peter Zijlstraac199db2009-03-19 20:26:15 +010023
Li Zefan20c89282009-05-06 10:33:45 +080024 return ret;
Peter Zijlstraac199db2009-03-19 20:26:15 +010025}
26
27void ftrace_profile_disable(int event_id)
28{
29 struct ftrace_event_call *event;
30
Li Zefan20c89282009-05-06 10:33:45 +080031 mutex_lock(&event_mutex);
Steven Rostedta59fd602009-04-10 13:52:20 -040032 list_for_each_entry(event, &ftrace_events, list) {
Li Zefan20c89282009-05-06 10:33:45 +080033 if (event->id == event_id) {
34 event->profile_disable(event);
35 break;
36 }
Peter Zijlstraac199db2009-03-19 20:26:15 +010037 }
Li Zefan20c89282009-05-06 10:33:45 +080038 mutex_unlock(&event_mutex);
Peter Zijlstraac199db2009-03-19 20:26:15 +010039}