All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Tom Zanussi <zanussi@kernel.org>
Cc: rostedt@goodmis.org, tglx@linutronix.de, mhiramat@kernel.org,
	vedang.patel@intel.com, bigeasy@linutronix.de,
	joel@joelfernandes.org, mathieu.desnoyers@efficios.com,
	julia@ni.com, linux-kernel@vger.kernel.org,
	linux-rt-users@vger.kernel.org, kernel-team@lge.com
Subject: Re: [PATCH v7 05/16] tracing: Generalize hist trigger onmax and save action
Date: Fri, 23 Nov 2018 11:50:00 +0900	[thread overview]
Message-ID: <20181123025000.GC25952@sejong> (raw)
In-Reply-To: <9baa2b4a9b708791b39f176e3b63c207163d8c3b.1542221863.git.tom.zanussi@linux.intel.com>

Hi Tom,

On Wed, Nov 14, 2018 at 02:18:02PM -0600, Tom Zanussi wrote:
> From: Tom Zanussi <tom.zanussi@linux.intel.com>
> 
> The action refactor code allowed actions and handlers to be separated,
> but the existing onmax handler and save action code is still not
> flexible enough to handle arbitrary coupling.  This change generalizes
> them and in the process makes additional handlers and actions easier
> to implement.
> 
> The onmax action can be broken up and thought of as two separate
> components - a variable to be tracked (the parameter given to the
> onmax($var_to_track) function) and an invisible variable created to
> save the ongoing result of doing something with that variable, such as
> saving the max value of that variable so far seen.
> 
> Separating it out like this and renaming it appropriately allows us to
> use the same code for similar tracking functions such as
> onchange($var_to_track), which would just track the last value seen
> rather than the max seen so far, which is useful in some situations.
> 
> Additionally, because different handlers and actions may want to save
> and access data differently e.g. save and retrieve tracking values as
> local variables vs something more global, save_val() and get_val()
> interface functions are introduced and max-specific implementations
> are used instead.
> 
> The same goes for the code that checks whether a maximum has been hit
> - a generic check_val() interface and max-checking implementation is
> used instead, which allows future patches to make use of he same code
> using their own implemetations of similar functionality.
> 
> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
> ---
>  kernel/trace/trace_events_hist.c | 225 ++++++++++++++++++++++++++-------------
>  1 file changed, 151 insertions(+), 74 deletions(-)
> 
> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
> index 54b78cfe2766..ac48ad1482c8 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -319,6 +319,15 @@ typedef void (*action_fn_t) (struct hist_trigger_data *hist_data,
>  			     struct ring_buffer_event *rbe,
>  			     struct action_data *data, u64 *var_ref_vals);
>  
> +typedef bool (*check_track_val_fn_t) (u64 track_val, u64 var_val);
> +typedef bool (*save_track_val_fn_t) (struct hist_trigger_data *hist_data,
> +				     struct tracing_map_elt *elt,
> +				     struct action_data *data,
> +				     unsigned int track_var_idx, u64 var_val);
> +typedef u64 (*get_track_val_fn_t) (struct hist_trigger_data *hist_data,
> +				   struct tracing_map_elt *elt,
> +				   struct action_data *data);
> +
>  enum handler_id {
>  	HANDLER_ONMATCH = 1,
>  	HANDLER_ONMAX,
> @@ -349,14 +358,18 @@ struct action_data {
>  
>  		struct {
>  			char			*var_str;
> -			unsigned int		max_var_ref_idx;
> -			struct hist_field	*max_var;
> -			struct hist_field	*var;
> -		} onmax;
> +			struct hist_field	*var_ref;
> +			unsigned int		var_ref_idx;

I have a question.  It's confusing for me there are many indexes for a
variable (ref).  The hist_field already has var.idx, var_idx and
var_ref_idx in it.  But you also added an external var_ref_idx along
with the var_ref.  Also I see another var_ref_idx in the action data.
Is all that really needed?  Could you please add some comment then?

Thanks,
Namhyung


> +
> +			struct hist_field	*track_var;
> +
> +			check_track_val_fn_t	check_val;
> +			save_track_val_fn_t	save_val;
> +			get_track_val_fn_t	get_val;
> +		} track_data;
>  	};
>  };

  reply	other threads:[~2018-11-23  2:50 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-14 20:17 [PATCH v7 00/16] tracing: Hist trigger snapshot and onchange additions Tom Zanussi
2018-11-14 20:17 ` [PATCH v7 01/16] tracing: Refactor hist trigger action code Tom Zanussi
2018-11-14 20:17 ` [PATCH v7 02/16] tracing: Make hist trigger Documentation better reflect actions/handlers Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 03/16] tracing: Add hist trigger handler.action documentation to README Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 04/16] tracing: Split up onmatch action data Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 05/16] tracing: Generalize hist trigger onmax and save action Tom Zanussi
2018-11-23  2:50   ` Namhyung Kim [this message]
2018-12-03 22:22     ` Tom Zanussi
2018-12-04  7:25       ` Namhyung Kim
2018-12-04 19:53         ` Tom Zanussi
2018-11-23  7:01   ` Namhyung Kim
2018-11-27 22:48     ` Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 06/16] tracing: Add conditional snapshot Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 07/16] tracing: Add hist trigger snapshot() action Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 08/16] tracing: Add hist trigger snapshot() action Documentation Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 09/16] tracing: Add hist trigger snapshot() action test case Tom Zanussi
2018-11-26 13:03   ` Masami Hiramatsu
2018-11-27 22:53     ` Tom Zanussi
2018-11-28  2:15       ` Masami Hiramatsu
2018-11-29  1:12         ` Tom Zanussi
2018-12-04 19:59     ` Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 10/16] tracing: Add hist trigger onchange() handler Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 11/16] tracing: Add hist trigger onchange() handler Documentation Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 12/16] tracing: Add hist trigger onchange() handler test case Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 13/16] tracing: Add alternative synthetic event trace action syntax Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 14/16] tracing: Add alternative synthetic event trace action test case Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 15/16] tracing: Add hist trigger action 'expected fail' " Tom Zanussi
2018-11-14 20:18 ` [PATCH v7 16/16] tracing: Add SPDX license GPL-2.0 license identifier to inter-event testcases Tom Zanussi
2018-11-26 14:09 ` [PATCH v7 00/16] tracing: Hist trigger snapshot and onchange additions Masami Hiramatsu
2018-11-26 21:21   ` Tom Zanussi
2018-11-29 13:52     ` Masami Hiramatsu
2018-11-29 14:54       ` Masami Hiramatsu
2018-11-29 15:07         ` [PATCH] sefltests/ftrace: Use /bin/echo for output with options mhiramat
2018-11-29 15:07           ` Masami Hiramatsu
2018-11-29 15:07           ` Masami Hiramatsu
2018-11-29 16:32           ` rostedt
2018-11-29 16:32             ` Steven Rostedt
2018-11-29 16:32             ` Steven Rostedt
2018-11-29 16:43           ` zanussi
2018-11-29 16:43             ` Tom Zanussi
2018-11-29 16:43             ` Tom Zanussi
2018-11-29 16:49             ` rostedt
2018-11-29 16:49               ` Steven Rostedt
2018-11-29 16:49               ` Steven Rostedt
2019-03-04 20:09               ` zanussi
2019-03-04 20:09                 ` Tom Zanussi
2019-03-04 20:09                 ` Tom Zanussi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181123025000.GC25952@sejong \
    --to=namhyung@kernel.org \
    --cc=bigeasy@linutronix.de \
    --cc=joel@joelfernandes.org \
    --cc=julia@ni.com \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vedang.patel@intel.com \
    --cc=zanussi@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.