Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751999AbdF0DQ3 (ORCPT ); Mon, 26 Jun 2017 23:16:29 -0400 Received: from mail-ot0-f173.google.com ([74.125.82.173]:35748 "EHLO mail-ot0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751492AbdF0DQW (ORCPT ); Mon, 26 Jun 2017 23:16:22 -0400 MIME-Version: 1.0 In-Reply-To: <20170626053844.5746-4-joelaf@google.com> References: <20170626053844.5746-1-joelaf@google.com> <20170626053844.5746-4-joelaf@google.com> From: Joel Fernandes Date: Mon, 26 Jun 2017 20:16:20 -0700 Message-ID: Subject: Re: [PATCH v4 3/3] tracing/ftrace: Add support to record and display tgid To: LKML Cc: Michael Sartain , Joel Fernandes , kernel-team@android.com, Steven Rostedt , Ingo Molnar Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3435 Lines: 101 Hi Steven, Please drop this patch (3/3) for now because the new allocation rearrangement we made to (1/3) will not work with this patch because flag_changed is called before the allocation failure case. Also TGIDs for event tracing is the main use case for my series, the function tracer isn't the main use case so I can post a proper version of this patch later once we get the main pieces in. 1/3 and 2/3 are still good to go, following are you patchwork links to them 1/3: https://patchwork.kernel.org/patch/9810685/ 2/3: https://patchwork.kernel.org/patch/9808641/ Incase its confusing, please let me know and I can just send you both these patches again. Thanks, Joel On Sun, Jun 25, 2017 at 10:38 PM, Joel Fernandes wrote: > Make function tracer able to record tgid if/when record-tgid is enabled. > > Cc: kernel-team@android.com > Cc: Steven Rostedt > Cc: Ingo Molnar > Tested-by: Michael Sartain > Signed-off-by: Joel Fernandes > --- > kernel/trace/trace_functions.c | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c > index a3bddbfd0874..d6bdc38ab273 100644 > --- a/kernel/trace/trace_functions.c > +++ b/kernel/trace/trace_functions.c > @@ -27,6 +27,7 @@ static void > function_stack_trace_call(unsigned long ip, unsigned long parent_ip, > struct ftrace_ops *op, struct pt_regs *pt_regs); > static struct tracer_flags func_flags; > +static bool tgid_recorded; > > /* Our option */ > enum { > @@ -104,6 +105,11 @@ static int function_trace_init(struct trace_array *tr) > put_cpu(); > > tracing_start_cmdline_record(); > + > + if (tr->trace_flags & TRACE_ITER_RECORD_TGID) { > + tgid_recorded = true; > + tracing_start_tgid_record(); > + } > tracing_start_function_trace(tr); > return 0; > } > @@ -112,6 +118,10 @@ static void function_trace_reset(struct trace_array *tr) > { > tracing_stop_function_trace(tr); > tracing_stop_cmdline_record(); > + if (tgid_recorded) { > + tracing_stop_tgid_record(); > + tgid_recorded = false; > + } > ftrace_reset_array_ops(tr); > } > > @@ -252,6 +262,21 @@ func_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set) > return 0; > } > > +static int > +func_tracer_flag_changed(struct trace_array *tr, unsigned int mask, > + int enabled) > +{ > + if (mask == TRACE_ITER_RECORD_TGID) { > + tgid_recorded = !!enabled; > + if (enabled) > + tracing_start_tgid_record(); > + else > + tracing_stop_tgid_record(); > + } > + > + return 0; > +} > + > static struct tracer function_trace __tracer_data = > { > .name = "function", > @@ -260,6 +285,7 @@ static struct tracer function_trace __tracer_data = > .start = function_trace_start, > .flags = &func_flags, > .set_flag = func_set_flag, > + .flag_changed = func_tracer_flag_changed, > .allow_instances = true, > #ifdef CONFIG_FTRACE_SELFTEST > .selftest = trace_selftest_startup_function, > -- > 2.13.1.611.g7e3b11ae1-goog >