diff options
| author | Ingo Molnar <mingo@elte.hu> | 2010-07-23 03:10:29 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2010-07-23 03:10:29 -0400 |
| commit | 3a01736e70a7d629140695ba46a901266b4460cc (patch) | |
| tree | 49ff8ce1e7c6a267f0ce84b5daddbe6666bc4253 /kernel/trace/trace_events.c | |
| parent | 4c21adf26f8fcf86a755b9b9f55c2e9fd241e1fb (diff) | |
| parent | 24a461d537f49f9da6533d83100999ea08c6c755 (diff) | |
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
Diffstat (limited to 'kernel/trace/trace_events.c')
| -rw-r--r-- | kernel/trace/trace_events.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index e8e6043f4d29..09b4fa6e4d3b 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
| @@ -170,6 +170,26 @@ int ftrace_event_reg(struct ftrace_event_call *call, enum trace_reg type) | |||
| 170 | } | 170 | } |
| 171 | EXPORT_SYMBOL_GPL(ftrace_event_reg); | 171 | EXPORT_SYMBOL_GPL(ftrace_event_reg); |
| 172 | 172 | ||
| 173 | void trace_event_enable_cmd_record(bool enable) | ||
| 174 | { | ||
| 175 | struct ftrace_event_call *call; | ||
| 176 | |||
| 177 | mutex_lock(&event_mutex); | ||
| 178 | list_for_each_entry(call, &ftrace_events, list) { | ||
| 179 | if (!(call->flags & TRACE_EVENT_FL_ENABLED)) | ||
| 180 | continue; | ||
| 181 | |||
| 182 | if (enable) { | ||
| 183 | tracing_start_cmdline_record(); | ||
| 184 | call->flags |= TRACE_EVENT_FL_RECORDED_CMD; | ||
| 185 | } else { | ||
| 186 | tracing_stop_cmdline_record(); | ||
| 187 | call->flags &= ~TRACE_EVENT_FL_RECORDED_CMD; | ||
| 188 | } | ||
| 189 | } | ||
| 190 | mutex_unlock(&event_mutex); | ||
| 191 | } | ||
| 192 | |||
| 173 | static int ftrace_event_enable_disable(struct ftrace_event_call *call, | 193 | static int ftrace_event_enable_disable(struct ftrace_event_call *call, |
| 174 | int enable) | 194 | int enable) |
| 175 | { | 195 | { |
| @@ -179,13 +199,19 @@ static int ftrace_event_enable_disable(struct ftrace_event_call *call, | |||
| 179 | case 0: | 199 | case 0: |
| 180 | if (call->flags & TRACE_EVENT_FL_ENABLED) { | 200 | if (call->flags & TRACE_EVENT_FL_ENABLED) { |
| 181 | call->flags &= ~TRACE_EVENT_FL_ENABLED; | 201 | call->flags &= ~TRACE_EVENT_FL_ENABLED; |
| 182 | tracing_stop_cmdline_record(); | 202 | if (call->flags & TRACE_EVENT_FL_RECORDED_CMD) { |
| 203 | tracing_stop_cmdline_record(); | ||
| 204 | call->flags &= ~TRACE_EVENT_FL_RECORDED_CMD; | ||
| 205 | } | ||
| 183 | call->class->reg(call, TRACE_REG_UNREGISTER); | 206 | call->class->reg(call, TRACE_REG_UNREGISTER); |
| 184 | } | 207 | } |
| 185 | break; | 208 | break; |
| 186 | case 1: | 209 | case 1: |
| 187 | if (!(call->flags & TRACE_EVENT_FL_ENABLED)) { | 210 | if (!(call->flags & TRACE_EVENT_FL_ENABLED)) { |
| 188 | tracing_start_cmdline_record(); | 211 | if (trace_flags & TRACE_ITER_RECORD_CMD) { |
| 212 | tracing_start_cmdline_record(); | ||
| 213 | call->flags |= TRACE_EVENT_FL_RECORDED_CMD; | ||
| 214 | } | ||
| 189 | ret = call->class->reg(call, TRACE_REG_REGISTER); | 215 | ret = call->class->reg(call, TRACE_REG_REGISTER); |
| 190 | if (ret) { | 216 | if (ret) { |
| 191 | tracing_stop_cmdline_record(); | 217 | tracing_stop_cmdline_record(); |
