diff mbox series

[2/5] ftrace: Comment __ftrace_hash_rec_update() and make filter_hash bool

Message ID 20240604212854.725383717@goodmis.org (mailing list archive)
State Superseded
Headers show
Series ftrace: Clean up and comment code | expand

Commit Message

Steven Rostedt June 4, 2024, 9:28 p.m. UTC
From: "Steven Rostedt (Google)" <rostedt@goodmis.org>

The function __ftrace_hash_rec_update() parameter "filter_hash" is only
used for true or false (boolean), but is of type int. It already has an
"inc" parameter that is boolean. This is confusing, make "filter_hash"
boolean as well.

While at it, add some documentation to that function especially since it
holds the guts of the filtering logic of ftrace.

Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
 kernel/trace/ftrace.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

Comments

Mark Rutland June 5, 2024, 10:15 a.m. UTC | #1
On Tue, Jun 04, 2024 at 05:28:19PM -0400, Steven Rostedt wrote:
> From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
> 
> The function __ftrace_hash_rec_update() parameter "filter_hash" is only
> used for true or false (boolean), but is of type int. It already has an
> "inc" parameter that is boolean. This is confusing, make "filter_hash"
> boolean as well.
> 
> While at it, add some documentation to that function especially since it
> holds the guts of the filtering logic of ftrace.
> 
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
>  kernel/trace/ftrace.c | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 9dcdefe9d1aa..93c7c5fd4249 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -1701,8 +1701,20 @@ static bool skip_record(struct dyn_ftrace *rec)
>  		!(rec->flags & FTRACE_FL_ENABLED);
>  }
>  
> +/*
> + * This is the main engine to the ftrace updates.
> + *
> + * It will iterate through all the available ftrace functions
> + * (the ones that ftrace can have callbacks to) and set the flags
> + * to the associated dyn_ftrace records.

I beleive s/to/in/ here, to make this one of:

	set the flags in the associated dyn_ftrace records.

... rather than:

	set the flags to the associated dyn_ftrace records.

> + *
> + * @filter_hash: True if for the filter hash is udpated, false for the
> + *               notrace hash

Typo: s/udpated/updated/

... though I couldn't parse this regardless; maybe:

	@filter_hash: true to update the filter hash, false to update
		      the notrace hash

Mark.

> + * @inc: True to add this hash, false to remove it (increment the
> + *       recorder counters or decrement them).
> + */
>  static bool __ftrace_hash_rec_update(struct ftrace_ops *ops,
> -				     int filter_hash,
> +				     bool filter_hash,
>  				     bool inc)
>  {
>  	struct ftrace_hash *hash;
> -- 
> 2.43.0
> 
>
Steven Rostedt June 5, 2024, 2:18 p.m. UTC | #2
On Wed, 5 Jun 2024 11:15:38 +0100
Mark Rutland <mark.rutland@arm.com> wrote:
> > diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> > index 9dcdefe9d1aa..93c7c5fd4249 100644
> > --- a/kernel/trace/ftrace.c
> > +++ b/kernel/trace/ftrace.c
> > @@ -1701,8 +1701,20 @@ static bool skip_record(struct dyn_ftrace *rec)
> >  		!(rec->flags & FTRACE_FL_ENABLED);
> >  }
> >  
> > +/*
> > + * This is the main engine to the ftrace updates.
> > + *
> > + * It will iterate through all the available ftrace functions
> > + * (the ones that ftrace can have callbacks to) and set the flags
> > + * to the associated dyn_ftrace records.  
> 
> I beleive s/to/in/ here, to make this one of:
> 
> 	set the flags in the associated dyn_ftrace records.
> 
> ... rather than:
> 
> 	set the flags to the associated dyn_ftrace records.

Thanks. It's good to get a "native English speaker" response ;-)

> 
> > + *
> > + * @filter_hash: True if for the filter hash is udpated, false for the
> > + *               notrace hash  
> 
> Typo: s/udpated/updated/
> 
> ... though I couldn't parse this regardless; maybe:
> 
> 	@filter_hash: true to update the filter hash, false to update
> 		      the notrace hash

Sure.

-- Steve

> 
> Mark.
> 
> > + * @inc: True to add this hash, false to remove it (increment the
> > + *       recorder counters or decrement them).
> > + */
> >  static bool __ftrace_hash_rec_update(struct ftrace_ops *ops,
> > -				     int filter_hash,
> > +				     bool filter_hash,
> >  				     bool inc)
> >  {
> >  	struct ftrace_hash *hash;
> > -- 
> > 2.43.0
> > 
> >
Steven Rostedt June 5, 2024, 4:06 p.m. UTC | #3
On Wed, 5 Jun 2024 10:18:32 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> > > + *
> > > + * @filter_hash: True if for the filter hash is udpated, false for the
> > > + *               notrace hash    
> > 
> > Typo: s/udpated/updated/
> > 
> > ... though I couldn't parse this regardless; maybe:
> > 
> > 	@filter_hash: true to update the filter hash, false to update
> > 		      the notrace hash  
> 
> Sure.

Actually, they are both wrong. Because I realized your's was not correct, I
started describing it in more detail and realized it does basically the
same thing (but differently) if filter_hash is set or not. I think it can
be removed completely!

I just tried it. I forced "filter_hash" to always be true, and all the
tests worked just fine. This function is only to update the dyn_ftrace
records when an ops is added or removed. It doesn't matter which filter is
being used, as they are both necessary for the update.

This will make that code a bit cleaner and simpler. Let me go and fix that
first, and then add the documentation on top!

This is what happens when you document your code :-p

This code has been rewritten a few times. When it was first written, which
filter was being changed may have been important. But now it is not.

-- Steve
diff mbox series

Patch

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 9dcdefe9d1aa..93c7c5fd4249 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -1701,8 +1701,20 @@  static bool skip_record(struct dyn_ftrace *rec)
 		!(rec->flags & FTRACE_FL_ENABLED);
 }
 
+/*
+ * This is the main engine to the ftrace updates.
+ *
+ * It will iterate through all the available ftrace functions
+ * (the ones that ftrace can have callbacks to) and set the flags
+ * to the associated dyn_ftrace records.
+ *
+ * @filter_hash: True if for the filter hash is udpated, false for the
+ *               notrace hash
+ * @inc: True to add this hash, false to remove it (increment the
+ *       recorder counters or decrement them).
+ */
 static bool __ftrace_hash_rec_update(struct ftrace_ops *ops,
-				     int filter_hash,
+				     bool filter_hash,
 				     bool inc)
 {
 	struct ftrace_hash *hash;