Re: [PATCH v1 1/1] kernel.h: Split out COUNT_ARGS() and CONCATENATE()

From: Andrew Morton
Date: Wed Apr 12 2023 - 14:55:36 EST


On Wed, 12 Apr 2023 15:56:43 +0300 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:

> On Tue, Apr 11, 2023 at 03:21:19PM -0700, Andrew Morton wrote:
> > On Tue, 11 Apr 2023 13:24:54 +0300 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
> >
> > > kernel.h is being used as a dump for all kinds of stuff for a long time.
> > > The COUNT_ARGS() and CONCATENATE() macros may be used in some places
> > > without need of the full kernel.h dependency train with it.
> > >
> > > Here is the attempt on cleaning it up by splitting out these macros().
> > >
> > > --- a/include/linux/kernel.h
> > > +++ b/include/linux/kernel.h
> > > @@ -13,6 +13,7 @@
> > >
> > > #include <linux/stdarg.h>
> > > #include <linux/align.h>
> > > +#include <linux/args.h>
> >
> > A more energetic patch would have included args.h into each file which
> > calls COUNT_ARGS() and CONCATENATE(), and not included args.h into
> > kernel.h. And that appears to be very easy - only bpf uses these things?
> >
> > In fact these macros are so weird and ugly I'd be inclined to move them
> > into some bpf header so we don't have to see them again. No
> > args.h, which might avoid encouraging others to use them.
>
> We have more users than one

I cant find any?

> and a couple of users that reimplement this macro
> under different names.

Where are these?

What the heck does it do and why is it so ugly and why isn't it
documented. Shudder.

I suppose if there are other callers(?) then we could hide it in a
countargs.h and not include that into kernel.h.