Re: [PATCH v1] kernel.h: Split out mathematical helpers

From: Andy Shevchenko
Date: Tue Feb 04 2020 - 08:41:51 EST


On Wed, Oct 02, 2019 at 05:13:37PM -0700, Andrew Morton wrote:
> On Tue, 10 Sep 2019 13:51:05 +0300 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
>
> > kernel.h is being used as a dump for all kinds of stuff for a long time.
> > Here is the attempt to start cleaning it up by splitting out mathematical
> > helpers.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> > ---
> > fs/nfs/callback_proc.c | 1 +
> > include/linux/bitops.h | 3 +-
> > include/linux/dcache.h | 1 +
> > include/linux/iommu-helper.h | 1 +
> > include/linux/kernel.h | 143 --------------------------------
> > include/linux/math.h | 149 ++++++++++++++++++++++++++++++++++
> > include/linux/rcu_node_tree.h | 2 +
>
> I'm not really understanding how this works, apart from "dumb luck".

Looks like it right now.

> Random example: mm/percpu.c needs roundup(), so how does it include the
> new math.h?
>
> ....... ./arch/x86/include/asm/uprobes.h
> ........ ./include/linux/notifier.h
> ......... ./include/linux/mutex.h
> ......... ./include/linux/srcu.h
> .......... ./include/linux/workqueue.h
> ........... ./include/linux/timer.h
> ............ ./include/linux/ktime.h
> ............. ./include/linux/time.h
> .............. ./include/linux/time32.h
> ............... ./include/linux/timex.h
> ................ ./include/uapi/linux/timex.h
> ................. ./include/linux/time.h
> ................ ./include/uapi/linux/param.h
> ................. ./arch/x86/include/generated/uapi/asm/param.h
> .................. ./include/asm-generic/param.h
> ................... ./include/uapi/asm-generic/param.h
> ................ ./arch/x86/include/asm/timex.h
> ................. ./arch/x86/include/asm/tsc.h
> ............. ./include/linux/jiffies.h
> .............. ./arch/x86/include/generated/uapi/asm/param.h
> .............. ./include/generated/timeconst.h
> ............. ./include/linux/timekeeping.h
> ............. ./include/linux/timekeeping32.h
> ............ ./include/linux/debugobjects.h
> .......... ./include/linux/rcu_segcblist.h
> .......... ./include/linux/srcutree.h
> ........... ./include/linux/rcu_node_tree.h
> ............ ./include/linux/math.h
>
> oh, like that.

Long way to clean up this...

> It seems rather unreliable. Perhaps a "#include <linux/math.h>" was
> intended in kernel.h?

Yeah, this needs to be done for time being in hope that it will be clearer in
the future. I'll do this in v2.

Thanks for review!

--
With Best Regards,
Andy Shevchenko