aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ftrace_event.h
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <srostedt@redhat.com>2013-03-04 23:05:12 -0500
committerSteven Rostedt <rostedt@goodmis.org>2013-03-15 00:34:56 -0400
commit575380da8b46969a2c6a7e14a51056a63b30fe2e (patch)
tree97eb88b78d064e2a3cfae555383f213083d29f45 /include/linux/ftrace_event.h
parent2a30c11f6a037e2475f3c651bc57e697e79fa963 (diff)
tracing: Only clear trace buffer on module unload if event was traced
Currently, when a module with events is unloaded, the trace buffer is cleared. This is just a safety net in case the module might have some strange callback when its event is outputted. But there's no reason to reset the buffer if the module didn't have any of its events traced. Add a flag to the event "call" structure called WAS_ENABLED and gets set when the event is ever enabled, and this flag never gets cleared. When a module gets unloaded, if any of its events have this flag set, then the trace buffer will get cleared. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'include/linux/ftrace_event.h')
-rw-r--r--include/linux/ftrace_event.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 0b0814d90164..d6964244e567 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -197,6 +197,7 @@ enum {
197 TRACE_EVENT_FL_CAP_ANY_BIT, 197 TRACE_EVENT_FL_CAP_ANY_BIT,
198 TRACE_EVENT_FL_NO_SET_FILTER_BIT, 198 TRACE_EVENT_FL_NO_SET_FILTER_BIT,
199 TRACE_EVENT_FL_IGNORE_ENABLE_BIT, 199 TRACE_EVENT_FL_IGNORE_ENABLE_BIT,
200 TRACE_EVENT_FL_WAS_ENABLED_BIT,
200}; 201};
201 202
202/* 203/*
@@ -205,12 +206,16 @@ enum {
205 * CAP_ANY - Any user can enable for perf 206 * CAP_ANY - Any user can enable for perf
206 * NO_SET_FILTER - Set when filter has error and is to be ignored 207 * NO_SET_FILTER - Set when filter has error and is to be ignored
207 * IGNORE_ENABLE - For ftrace internal events, do not enable with debugfs file 208 * IGNORE_ENABLE - For ftrace internal events, do not enable with debugfs file
209 * WAS_ENABLED - Set and stays set when an event was ever enabled
210 * (used for module unloading, if a module event is enabled,
211 * it is best to clear the buffers that used it).
208 */ 212 */
209enum { 213enum {
210 TRACE_EVENT_FL_FILTERED = (1 << TRACE_EVENT_FL_FILTERED_BIT), 214 TRACE_EVENT_FL_FILTERED = (1 << TRACE_EVENT_FL_FILTERED_BIT),
211 TRACE_EVENT_FL_CAP_ANY = (1 << TRACE_EVENT_FL_CAP_ANY_BIT), 215 TRACE_EVENT_FL_CAP_ANY = (1 << TRACE_EVENT_FL_CAP_ANY_BIT),
212 TRACE_EVENT_FL_NO_SET_FILTER = (1 << TRACE_EVENT_FL_NO_SET_FILTER_BIT), 216 TRACE_EVENT_FL_NO_SET_FILTER = (1 << TRACE_EVENT_FL_NO_SET_FILTER_BIT),
213 TRACE_EVENT_FL_IGNORE_ENABLE = (1 << TRACE_EVENT_FL_IGNORE_ENABLE_BIT), 217 TRACE_EVENT_FL_IGNORE_ENABLE = (1 << TRACE_EVENT_FL_IGNORE_ENABLE_BIT),
218 TRACE_EVENT_FL_WAS_ENABLED = (1 << TRACE_EVENT_FL_WAS_ENABLED_BIT),
214}; 219};
215 220
216struct ftrace_event_call { 221struct ftrace_event_call {