Re: Moving include/asm-* [was: Re: Moving sound/* to drivers/ ?]

Linus Torvalds
2008-05-21T23:52:43Z

On Thu, 22 May 2008, Paul Mackerras wrote:
>
> Linus Torvalds writes:
>
> > Me personally, I've been more irritated by include/asm-xyz vs arch/xyz. It
> > would be so nice if all the arch-specific changes woudl always show up
> > under arch/ (both from a statistics standpoint, and just because then a
> > diffstat really shows arch-specific stuff really obviously, and sorts all
> > the arch-specific stuff together).
>
> We could git mv include/asm-xyz arch/xyz/asm and then arrange to pass
> -Iarch/$(ARCH) to gcc.

That would work, but there's a few alternatives that I think would work
even better.

The downside with what you suggest is that I'd like the arch-specific
include files to be clearly separated (ie I think the naming should be
"something/include/something", which makes things clearer.

Also, I hate how doing '-Iarch/$(ARCH)' would basically make any random
arch/xyz/ subdirectory be a potential location for a header file. I'd hate
for the include-path to contain subdirectories that simply aren't meant
for that (ie #include <kernel/tls.h> would now quite by mistake find the
*private* header file in arch/x86/kernel/tls.h that was never meant to be
generally visible!)

So the trivial alternative is to just do

git mv include/asm-xyz arch/xyz/include

and keep the symlink that we already set up (just make it point to
arch/xyz/include instead of include/asm-xyz). That is conceptually the
smallest change.

But the alternative I'd actually *prefer* would avoid the symlink, and
would be roughly:

for i in $(arch-list)
do
mkdir arch/$i/include
git mv include/asm-$i arch/$i/asm

done
git mv include/asm-generic include/asm

and then remove the symlink to asm entirely, and instead add a
-Iarch/xyz/include, and put that as the *first* entry in the include path.

This would mean that:

- no symlink games

- if some architecture just uses the generic header file, it doesn't need
to do anything: it just wouldn't implement that header file at all, and
the next entry in the search-path would just find the generic
include/asm entry.

I dunno. It's not a huge deal, but it really would be nice to have all the
arch/xyz code together for diffstat's etc.

Linus