[PATCH] srcu: Debloat the <linux/rcu_segcblist.h> header

From: Ingo Molnar
Date: Tue May 02 2017 - 04:31:32 EST

* Ingo Molnar <mingo@xxxxxxxxxx> wrote:

> > I will get rid of the unused rcu_segcblist_extract_all() function and create a
> > kernel/rcu/segcblist.c for the functions that are either non-trivial or
> > performance-insensitive.
> >
> > Does that cover it, or am I missing something?
> I'd also suggest moving as much of the RCU internal data types into kernel/rcu/
> as possible. It's not clear to me which part of it is supposed to be a public
> API and which bits are internal. It might make sense to keep it internal for the
> time being, and only export things once there are users.
> I.e. a pretty good solution would be to move all of
> include/linux/rcu_segcblist.h to kernel/rcu/rcu_segcblist.c or so - and do a
> kernel/rcu/rcu_segcblist.h with the data types and function prototypes.

I.e. the attached patch as a first step.

Only minimally build tested, but it appears to be do the trick.

This changes the <linux/rcu_segcblist.h> header from ~700 lines to only 90 lines -
60% of which is comments.

The deinlining of the inline functions within kernel/rcu/ should also be done, as
a separate patch on top of this.

What do you think?

This could also be a model to factor out and deinline other bits of the RCU
machinery as much as possible.