[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180326141104.6d63660a@gandalf.local.home>
Date: Mon, 26 Mar 2018 14:11:04 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Alexei Starovoitov <ast@...com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
"David S. Miller" <davem@...emloft.net>,
Daniel Borkmann <daniel@...earbox.net>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Peter Zijlstra <peterz@...radead.org>,
netdev <netdev@...r.kernel.org>,
kernel-team <kernel-team@...com>,
linux-api <linux-api@...r.kernel.org>,
"Frank Ch. Eigler" <fche@...hat.com>
Subject: Re: [PATCH v5 bpf-next 06/10] tracepoint: compute num_args at build
time
On Mon, 26 Mar 2018 10:55:51 -0700
Alexei Starovoitov <ast@...com> wrote:
> An email ago you were ok to s/return/return NULL/ in your out-of-tree
> module, but now flip flop to add new function approach just to
> reduce the work you need to do in lttng?
> We're not talking about changing __kmalloc signature here.
> My patch extends for_each_kernel_tracepoint() api similar to other
> for_each_*() iterators and improves possible uses of it.
Alexei, do you have another use case for using
for_each_kernel_tracepoint() other than the find_tp? If so, then I'm
sure Mathieu can handle the change.
But I think it's cleaner to add a tracepoint_find_by_name() function.
If you come up with another use case for using the for_each* function
then we'll consider changing it then.
> One thing is to be nice to out-of-tree and do not break them
> for no reason, but arguing that kernel shouldn't add a minor extension
> to for_each_kernel_tracepoint() api is really taking the whole thing
> to next level.
That's not the point. I disagree with the reason for the change, and
believe that it would be cleaner to add a find_by_name() function.
Which would make your patch set even cleaner.
Instead of having in the bpf code:
static void *__find_tp(struct tracepoint *tp, void *priv)
{
char *name = priv;
if (!strcmp(tp->name, name))
return tp;
return NULL;
}
[..]
tp = for_each_kernel_tracepoint(__find_tp, tp_name);
if (!tp)
return -ENOENT;
You would simply have:
tp = tracepoint_find_by_name(tp_name);
if (!tp)
return -ENOENT;
That would make the code more obvious to what it is doing. And this
does not impede your patch set at all.
-- Steve
Powered by blists - more mailing lists