tracing: Pass trace_array to set_flag callback
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Fri, 10 Jan 2014 16:13:54 +0000 (11:13 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Thu, 20 Feb 2014 17:13:07 +0000 (12:13 -0500)
As options (flags) may affect instances instead of being global
the set_flag() callbacks need to receive the trace_array descriptor
of the instance they will be modifying.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/blktrace.c
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_functions.c
kernel/trace/trace_functions_graph.c
kernel/trace/trace_irqsoff.c
kernel/trace/trace_nop.c
kernel/trace/trace_sched_wakeup.c

index b418cb0d72424ab454e66e3cde881784ce1f0fad..0d758ca619330ac5dc30395cb5f4695f80be9808 100644 (file)
@@ -1427,7 +1427,8 @@ static enum print_line_t blk_tracer_print_line(struct trace_iterator *iter)
        return print_one_line(iter, true);
 }
 
-static int blk_tracer_set_flag(u32 old_flags, u32 bit, int set)
+static int
+blk_tracer_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        /* don't output context-info for blk_classic output */
        if (bit == TRACE_BLK_OPT_CLASSIC) {
index 815c878f409bd94e08777d1b9f83b1553f4a2e24..d7dfc7efc4bf5b1e70b6bf59976d56de68cc8831 100644 (file)
@@ -73,7 +73,8 @@ static struct tracer_flags dummy_tracer_flags = {
        .opts = dummy_tracer_opt
 };
 
-static int dummy_set_flag(u32 old_flags, u32 bit, int set)
+static int
+dummy_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        return 0;
 }
@@ -3339,13 +3340,14 @@ static int tracing_trace_options_show(struct seq_file *m, void *v)
        return 0;
 }
 
-static int __set_tracer_option(struct tracer *trace,
+static int __set_tracer_option(struct trace_array *tr,
                               struct tracer_flags *tracer_flags,
                               struct tracer_opt *opts, int neg)
 {
+       struct tracer *trace = tr->current_trace;
        int ret;
 
-       ret = trace->set_flag(tracer_flags->val, opts->bit, !neg);
+       ret = trace->set_flag(tr, tracer_flags->val, opts->bit, !neg);
        if (ret)
                return ret;
 
@@ -3357,8 +3359,9 @@ static int __set_tracer_option(struct tracer *trace,
 }
 
 /* Try to assign a tracer specific option */
-static int set_tracer_option(struct tracer *trace, char *cmp, int neg)
+static int set_tracer_option(struct trace_array *tr, char *cmp, int neg)
 {
+       struct tracer *trace = tr->current_trace;
        struct tracer_flags *tracer_flags = trace->flags;
        struct tracer_opt *opts = NULL;
        int i;
@@ -3367,8 +3370,7 @@ static int set_tracer_option(struct tracer *trace, char *cmp, int neg)
                opts = &tracer_flags->opts[i];
 
                if (strcmp(cmp, opts->name) == 0)
-                       return __set_tracer_option(trace, trace->flags,
-                                                  opts, neg);
+                       return __set_tracer_option(tr, trace->flags, opts, neg);
        }
 
        return -EINVAL;
@@ -3440,7 +3442,7 @@ static int trace_set_options(struct trace_array *tr, char *option)
 
        /* If no option could be set, test the specific tracer options */
        if (!trace_options[i])
-               ret = set_tracer_option(tr->current_trace, cmp, neg);
+               ret = set_tracer_option(tr, cmp, neg);
 
        mutex_unlock(&trace_types_lock);
 
@@ -5689,7 +5691,7 @@ trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
 
        if (!!(topt->flags->val & topt->opt->bit) != val) {
                mutex_lock(&trace_types_lock);
-               ret = __set_tracer_option(topt->tr->current_trace, topt->flags,
+               ret = __set_tracer_option(topt->tr, topt->flags,
                                          topt->opt, !val);
                mutex_unlock(&trace_types_lock);
                if (ret)
index 02b592f2d4b7925af2d25407a4b4d879c816b412..649a23d421c1ee6963e48304368988acf7c47601 100644 (file)
@@ -355,7 +355,8 @@ struct tracer {
        void                    (*print_header)(struct seq_file *m);
        enum print_line_t       (*print_line)(struct trace_iterator *iter);
        /* If you handled the flag setting, return 0 */
-       int                     (*set_flag)(u32 old_flags, u32 bit, int set);
+       int                     (*set_flag)(struct trace_array *tr,
+                                           u32 old_flags, u32 bit, int set);
        /* Return 0 if OK with change, else return non-zero */
        int                     (*flag_changed)(struct tracer *tracer,
                                                u32 mask, int set);
index 38fe1483c50817cc4b1b6a33807985cda37d9b6a..85e517e84f505ec7d28d43b9261aa68baf6165f7 100644 (file)
@@ -175,7 +175,8 @@ static void tracing_stop_function_trace(void)
                unregister_ftrace_function(&trace_ops);
 }
 
-static int func_set_flag(u32 old_flags, u32 bit, int set)
+static int
+func_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        switch (bit) {
        case TRACE_FUNC_OPT_STACK:
index 0b99120d395cc166583e400e80108b7d07540935..deff11200261b52d888cd614126b4d4b4eba1de7 100644 (file)
@@ -1476,7 +1476,8 @@ void graph_trace_close(struct trace_iterator *iter)
        }
 }
 
-static int func_graph_set_flag(u32 old_flags, u32 bit, int set)
+static int
+func_graph_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        if (bit == TRACE_GRAPH_PRINT_IRQS)
                ftrace_graph_skip_irqs = !set;
index 2aefbee93a6d574a0ea082632788a1d5c7791474..fd99b0c183acf084a1172fc0932e9073f6451c61 100644 (file)
@@ -160,7 +160,8 @@ static struct ftrace_ops trace_ops __read_mostly =
 #endif /* CONFIG_FUNCTION_TRACER */
 
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
-static int irqsoff_set_flag(u32 old_flags, u32 bit, int set)
+static int
+irqsoff_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        int cpu;
 
@@ -266,7 +267,8 @@ __trace_function(struct trace_array *tr,
 #else
 #define __trace_function trace_function
 
-static int irqsoff_set_flag(u32 old_flags, u32 bit, int set)
+static int
+irqsoff_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        return -EINVAL;
 }
index 394f94417e2f9edadbfdd449a90f5b8fd9ddd166..f3984098c0d740663bd3c590ea976d0120e42c42 100644 (file)
@@ -62,7 +62,7 @@ static void nop_trace_reset(struct trace_array *tr)
  * If you don't implement it, then the flag setting will be
  * automatically accepted.
  */
-static int nop_set_flag(u32 old_flags, u32 bit, int set)
+static int nop_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        /*
         * Note that you don't need to update nop_flags.val yourself.
index 6e32635e5e570c7632aaebeb724c1d34e10172a1..f0bbdc2610287da0323b0da427b69b5a21288259 100644 (file)
@@ -209,7 +209,8 @@ static void stop_func_tracer(int graph)
 }
 
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
-static int wakeup_set_flag(u32 old_flags, u32 bit, int set)
+static int
+wakeup_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
 
        if (!(bit & TRACE_DISPLAY_GRAPH))
@@ -311,7 +312,8 @@ __trace_function(struct trace_array *tr,
 #else
 #define __trace_function trace_function
 
-static int wakeup_set_flag(u32 old_flags, u32 bit, int set)
+static int
+wakeup_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
 {
        return -EINVAL;
 }