summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-05-08 16:27:41 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-05-08 16:30:26 -0400
commit4671c79408a3f8a5a6a45e39c4c164dada3a5678 (patch)
treec8cc041841afe9d2c1be14a2410c1f468b7477be
parent29f93943d1916d1a3faa3f10f4a06994347ac990 (diff)
tracing: add trace_set_clr_event to export event enabling function
Other parts of the kernel may need to be able to enable or disable specific events. Especially parts that create trace events. [ Impact: allow enabling of trace events by those that create the event ] Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--include/linux/ftrace_event.h2
-rw-r--r--kernel/trace/trace_events.c17
2 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 662c1becf36..bae51ddfabd 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -127,6 +127,8 @@ extern int trace_define_field(struct ftrace_event_call *call, char *type,
#define is_signed_type(type) (((type)(-1)) < 0)
+int trace_set_clr_event(const char *system, const char *event, int set);
+
/*
* The double __builtin_constant_p is because gcc will give us an error
* if we try to allocate the static variable to fmt if it is not a
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 2eecb87e42d..0eec0c55dd8 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -177,6 +177,23 @@ static int ftrace_set_clr_event(char *buf, int set)
return __ftrace_set_clr_event(match, sub, event, set);
}
+/**
+ * trace_set_clr_event - enable or disable an event
+ * @system: system name to match (NULL for any system)
+ * @event: event name to match (NULL for all events, within system)
+ * @set: 1 to enable, 0 to disable
+ *
+ * This is a way for other parts of the kernel to enable or disable
+ * event recording.
+ *
+ * Returns 0 on success, -EINVAL if the parameters do not match any
+ * registered events.
+ */
+int trace_set_clr_event(const char *system, const char *event, int set)
+{
+ return __ftrace_set_clr_event(NULL, system, event, set);
+}
+
/* 128 should be much more than enough */
#define EVENT_BUF_SIZE 127