Re: RFC: cleaning up the in-kernel headers

From: Dave Jones
Date: Tue Jul 11 2006 - 14:18:36 EST


On Tue, Jul 11, 2006 at 10:15:59AM -0700, Joshua Hudson wrote:
> On 7/11/06, Dave Jones <davej@xxxxxxxxxx> wrote:
> >On Tue, Jul 11, 2006 at 06:06:39PM +0200, Adrian Bunk wrote:
> > > I'd like to cleanup the mess of the in-kernel headers, based on the
> > > following rules:
> > > - every header should #include everything it uses
> > > - remove unneeded #include's from headers
> > >
> > > This would also remove all the implicit rules "before #include'ing
> > > header foo.h, you must #include header bar.h" you usually only see when
> > > the compilation fails.
> >
> >You may want to add as a secondary goal, splitting up some of the
> >huge 3-headed monster include files like sched.h
> >(It's better than it used to be, but it still sucks, and that thing
> >#include's the world). Worst, iirc module.h pulls it in, which means
> >everything built as a module is pulling in hundreds of includes
> >even though most of the time, it'll never use anything from the
> >indirect ones.
> If you pull this off, you can shave a lot off compile time as almost
> every component #includes module.h

I did it on at least two occasions in the past, and someone else picked
it up and retried submitting it a third time, but it never got merged.
The problem with changes of this scale is they tend to be wide-reaching,
and impact areas which other people are patching, so it's something
that needs to go in as soon as the patch is done, or it becomes stale
very quickly.

It did make a noticable difference to compiles, though I forget the
exact numbers. Should be in the list archives somewhere.
I have vague recollection that it shaved off around 20-30s, though
my memory is fuzzy.

Dave

--
http://www.codemonkey.org.uk
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/