tracing: Make the pid filtering helper functions global
authorSteven Rostedt <rostedt@goodmis.org>
Thu, 14 Apr 2016 11:38:13 +0000 (07:38 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 20 Jun 2016 13:54:16 +0000 (09:54 -0400)
Make the functions used for pid filtering global for tracing, such that the
function tracer can use the pid code as well.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace.h
kernel/trace/trace_events.c

index 5167c36..1723308 100644 (file)
@@ -628,6 +628,15 @@ extern unsigned long nsecs_to_usecs(unsigned long nsecs);
 
 extern unsigned long tracing_thresh;
 
+/* PID filtering */
+bool trace_find_filtered_pid(struct trace_pid_list *filtered_pids,
+                            pid_t search_pid);
+bool trace_ignore_this_task(struct trace_pid_list *filtered_pids,
+                           struct task_struct *task);
+void trace_filter_add_remove_task(struct trace_pid_list *pid_list,
+                                 struct task_struct *self,
+                                 struct task_struct *task);
+
 #ifdef CONFIG_TRACER_MAX_TRACE
 void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu);
 void update_max_tr_single(struct trace_array *tr,
index 3d41558..b5e514c 100644 (file)
@@ -503,8 +503,8 @@ static void ftrace_clear_events(struct trace_array *tr)
 extern int pid_max;
 
 /* Returns true if found in filter */
-static bool
-find_filtered_pid(struct trace_pid_list *filtered_pids, pid_t search_pid)
+bool
+trace_find_filtered_pid(struct trace_pid_list *filtered_pids, pid_t search_pid)
 {
        /*
         * If pid_max changed after filtered_pids was created, we
@@ -516,8 +516,8 @@ find_filtered_pid(struct trace_pid_list *filtered_pids, pid_t search_pid)
        return test_bit(search_pid, filtered_pids->pids);
 }
 
-static bool
-ignore_this_task(struct trace_pid_list *filtered_pids, struct task_struct *task)
+bool
+trace_ignore_this_task(struct trace_pid_list *filtered_pids, struct task_struct *task)
 {
        /*
         * Return false, because if filtered_pids does not exist,
@@ -526,19 +526,19 @@ ignore_this_task(struct trace_pid_list *filtered_pids, struct task_struct *task)
        if (!filtered_pids)
                return false;
 
-       return !find_filtered_pid(filtered_pids, task->pid);
+       return !trace_find_filtered_pid(filtered_pids, task->pid);
 }
 
-static void filter_add_remove_task(struct trace_pid_list *pid_list,
-                                  struct task_struct *self,
-                                  struct task_struct *task)
+void trace_filter_add_remove_task(struct trace_pid_list *pid_list,
+                                 struct task_struct *self,
+                                 struct task_struct *task)
 {
        if (!pid_list)
                return;
 
        /* For forks, we only add if the forking task is listed */
        if (self) {
-               if (!find_filtered_pid(pid_list, self->pid))
+               if (!trace_find_filtered_pid(pid_list, self->pid))
                        return;
        }
 
@@ -560,7 +560,7 @@ event_filter_pid_sched_process_exit(void *data, struct task_struct *task)
        struct trace_array *tr = data;
 
        pid_list = rcu_dereference_sched(tr->filtered_pids);
-       filter_add_remove_task(pid_list, NULL, task);
+       trace_filter_add_remove_task(pid_list, NULL, task);
 }
 
 static void
@@ -572,7 +572,7 @@ event_filter_pid_sched_process_fork(void *data,
        struct trace_array *tr = data;
 
        pid_list = rcu_dereference_sched(tr->filtered_pids);
-       filter_add_remove_task(pid_list, self, task);
+       trace_filter_add_remove_task(pid_list, self, task);
 }
 
 void trace_event_follow_fork(struct trace_array *tr, bool enable)
@@ -600,8 +600,8 @@ event_filter_pid_sched_switch_probe_pre(void *data, bool preempt,
        pid_list = rcu_dereference_sched(tr->filtered_pids);
 
        this_cpu_write(tr->trace_buffer.data->ignore_pid,
-                      ignore_this_task(pid_list, prev) &&
-                      ignore_this_task(pid_list, next));
+                      trace_ignore_this_task(pid_list, prev) &&
+                      trace_ignore_this_task(pid_list, next));
 }
 
 static void
@@ -614,7 +614,7 @@ event_filter_pid_sched_switch_probe_post(void *data, bool preempt,
        pid_list = rcu_dereference_sched(tr->filtered_pids);
 
        this_cpu_write(tr->trace_buffer.data->ignore_pid,
-                      ignore_this_task(pid_list, next));
+                      trace_ignore_this_task(pid_list, next));
 }
 
 static void
@@ -630,7 +630,7 @@ event_filter_pid_sched_wakeup_probe_pre(void *data, struct task_struct *task)
        pid_list = rcu_dereference_sched(tr->filtered_pids);
 
        this_cpu_write(tr->trace_buffer.data->ignore_pid,
-                      ignore_this_task(pid_list, task));
+                      trace_ignore_this_task(pid_list, task));
 }
 
 static void
@@ -647,7 +647,7 @@ event_filter_pid_sched_wakeup_probe_post(void *data, struct task_struct *task)
 
        /* Set tracing if current is enabled */
        this_cpu_write(tr->trace_buffer.data->ignore_pid,
-                      ignore_this_task(pid_list, current));
+                      trace_ignore_this_task(pid_list, current));
 }
 
 static void __ftrace_clear_event_pids(struct trace_array *tr)
@@ -1654,7 +1654,7 @@ static void ignore_task_cpu(void *data)
                                             mutex_is_locked(&event_mutex));
 
        this_cpu_write(tr->trace_buffer.data->ignore_pid,
-                      ignore_this_task(pid_list, current));
+                      trace_ignore_this_task(pid_list, current));
 }
 
 static ssize_t