netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Alexei Starovoitov <ast@fb.com>
Cc: <davem@davemloft.net>, <daniel@iogearbox.net>,
	<torvalds@linux-foundation.org>, <peterz@infradead.org>,
	<netdev@vger.kernel.org>, <kernel-team@fb.com>,
	<linux-api@vger.kernel.org>
Subject: Re: [PATCH v5 bpf-next 06/10] tracepoint: compute num_args at build time
Date: Mon, 26 Mar 2018 12:31:52 -0400	[thread overview]
Message-ID: <20180326123152.67ce782f@gandalf.local.home> (raw)
In-Reply-To: <20180326115615.0ca53410@gandalf.local.home>

On Mon, 26 Mar 2018 11:56:15 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> On Fri, 23 Mar 2018 19:30:34 -0700
> Alexei Starovoitov <ast@fb.com> wrote:
> 
> > +static void *for_each_tracepoint_range(struct tracepoint * const *begin,
> > +				       struct tracepoint * const *end,
> > +				       void *(*fct)(struct tracepoint *tp, void *priv),
> > +				       void *priv)
> >  {
> >  	struct tracepoint * const *iter;
> > +	void *ret;
> >  
> >  	if (!begin)
> > -		return;
> > -	for (iter = begin; iter < end; iter++)
> > -		fct(*iter, priv);
> > +		return NULL;
> > +	for (iter = begin; iter < end; iter++) {
> > +		ret = fct(*iter, priv);
> > +		if (ret)
> > +			return ret;  
> 
> So you just stopped the loop here. You have an inconsistent state. What
> about the functions that were called before. How do you undo them? Or
> what about the rest that haven't been touched. This function gives no
> feedback to the caller.
> 

OK, I see my confusion with this patch. I much rather have a new
function, and this isn't about being nice to out of tree modules. We
can keep this function as is (to be nice), but my biggest squabble
about this patch is that the function name is inconsistent to what its
doing. When I have a function that says "for_each" I expect it to go
through each function and not exit out. This is because of what I said
above. When you have a "for_each" function that stops in the middle, you
have a state that you may need to deal with. How would another use of
that function clean up the mess if it expected to fail at some random
location.

I see in the next patch that you are using it simply to find a
tracepoint with the given name. I'd be much happier to add a new
function called:

   tracepoint_find_by_name(const char *name)

Because using a "for_each" to implement such a simple function seems
more of a hack.

-- Steve

  reply	other threads:[~2018-03-26 16:31 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-24  2:30 [PATCH v5 bpf-next 00/10] bpf, tracing: introduce bpf raw tracepoints Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 01/10] treewide: remove large struct-pass-by-value from tracepoint arguments Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 02/10] net/mediatek: disambiguate mt76 vs mt7601u trace events Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 03/10] net/mac802154: disambiguate mac80215 vs mac802154 " Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 04/10] net/wireless/iwlwifi: fix iwlwifi_dev_ucode_error tracepoint Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 05/10] macro: introduce COUNT_ARGS() macro Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 06/10] tracepoint: compute num_args at build time Alexei Starovoitov
2018-03-26 15:02   ` Steven Rostedt
2018-03-26 15:14     ` Mathieu Desnoyers
2018-03-26 15:42       ` Alexei Starovoitov
2018-03-26 15:55         ` Mathieu Desnoyers
2018-03-26 16:08           ` Alexei Starovoitov
2018-03-26 16:17             ` Mathieu Desnoyers
2018-03-26 16:25               ` Alexei Starovoitov
2018-03-26 16:35                 ` Steven Rostedt
2018-03-26 16:47                   ` Alexei Starovoitov
2018-03-26 17:04                     ` Steven Rostedt
2018-03-26 16:57                   ` Mathieu Desnoyers
2018-03-26 17:55                     ` Alexei Starovoitov
2018-03-26 18:11                       ` Steven Rostedt
2018-03-26 18:39                         ` Alexei Starovoitov
2018-03-26 18:48                           ` Steven Rostedt
2018-03-26 21:27                       ` Mathieu Desnoyers
2018-03-26 15:56   ` Steven Rostedt
2018-03-26 16:31     ` Steven Rostedt [this message]
2018-03-24  2:30 ` [PATCH v5 bpf-next 07/10] bpf: introduce BPF_RAW_TRACEPOINT Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 08/10] libbpf: add bpf_raw_tracepoint_open helper Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 09/10] samples/bpf: raw tracepoint test Alexei Starovoitov
2018-03-24  2:30 ` [PATCH v5 bpf-next 10/10] selftests/bpf: test for bpf_get_stackid() from raw tracepoints Alexei Starovoitov
2018-03-24  2:35 ` [PATCH v5 bpf-next 00/10] bpf, tracing: introduce bpf " Alexei Starovoitov
2018-03-26  8:28 ` Daniel Borkmann
2018-03-26 15:04   ` Steven Rostedt
2018-03-26 15:32     ` Daniel Borkmann
2018-03-26 15:47       ` Steven Rostedt
2018-03-26 16:00         ` Alexei Starovoitov
2018-03-26 16:16           ` Steven Rostedt

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=20180326123152.67ce782f@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=ast@fb.com \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=kernel-team@fb.com \
    --cc=linux-api@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).