]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
tracing: Add __find_event_file() to find event files without restrictions
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 8 May 2018 19:06:38 +0000 (15:06 -0400)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 29 May 2018 12:28:18 +0000 (08:28 -0400)
By adding the function __find_event_file() that can search for files without
restrictions, such as if the event associated with the file has a reg
function, or if it has the "ignore" flag set, the files that are associated
to ftrace internal events (like trace_marker and function events) can be
found and used.

find_event_file() still returns a "filtered" file, as most callers need a
valid trace event file. One created by the trace_events.h macros and not one
created for parsing ftrace specific events.

Reviewed-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace.h
kernel/trace/trace_events.c

index 6bfc2467479cd9a97e0b5a5f5a6303333e170fb3..07c43960a7044dce91fc95dcb260628707968f3d 100644 (file)
@@ -1454,6 +1454,9 @@ extern void trace_event_enable_tgid_record(bool enable);
 extern int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr);
 extern int event_trace_del_tracer(struct trace_array *tr);
 
+extern struct trace_event_file *__find_event_file(struct trace_array *tr,
+                                                 const char *system,
+                                                 const char *event);
 extern struct trace_event_file *find_event_file(struct trace_array *tr,
                                                const char *system,
                                                const char *event);
index 05c7172c6667d409de1d32f48afa01752f7a30ce..caf76355f0a3eddba4ff99d3d6c6d8ac30c43ca3 100644 (file)
@@ -2473,8 +2473,9 @@ __trace_add_event_dirs(struct trace_array *tr)
        }
 }
 
+/* Returns any file that matches the system and event */
 struct trace_event_file *
-find_event_file(struct trace_array *tr, const char *system,  const char *event)
+__find_event_file(struct trace_array *tr, const char *system, const char *event)
 {
        struct trace_event_file *file;
        struct trace_event_call *call;
@@ -2485,10 +2486,7 @@ find_event_file(struct trace_array *tr, const char *system,  const char *event)
                call = file->event_call;
                name = trace_event_name(call);
 
-               if (!name || !call->class || !call->class->reg)
-                       continue;
-
-               if (call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)
+               if (!name || !call->class)
                        continue;
 
                if (strcmp(event, name) == 0 &&
@@ -2498,6 +2496,20 @@ find_event_file(struct trace_array *tr, const char *system,  const char *event)
        return NULL;
 }
 
+/* Returns valid trace event files that match system and event */
+struct trace_event_file *
+find_event_file(struct trace_array *tr, const char *system, const char *event)
+{
+       struct trace_event_file *file;
+
+       file = __find_event_file(tr, system, event);
+       if (!file || !file->event_call->class->reg ||
+           file->event_call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)
+               return NULL;
+
+       return file;
+}
+
 #ifdef CONFIG_DYNAMIC_FTRACE
 
 /* Avoid typos */