mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Matthew Wilcox <matthew@wil.cx>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Randy Dunlap <rdunlap@xenotime.net>,
	Stefan Richter <stefanr@s5r6.in-berlin.de>,
	Al Viro <viro@ftp.linux.org.uk>,
	Linus Torvalds <torvalds@osdl.org>,
	Alexey Dobriyan <adobriyan@gmail.com>,
	Linux Kernel Development <linux-kernel@vger.kernel.org>,
	linux-arch@vger.kernel.org
Subject: Re: dealing with excessive includes
Date: Sun, 22 Oct 2006 18:31:11 -0600	[thread overview]
Message-ID: <20061023003111.GD25210@parisc-linux.org> (raw)
In-Reply-To: <Pine.LNX.4.62.0610221956380.29899@pademelon.sonytel.be>

On Sun, Oct 22, 2006 at 07:58:53PM +0200, Geert Uytterhoeven wrote:
> On Fri, 20 Oct 2006, Randy Dunlap wrote:
> > Yes, we have lots of header include indirection going on.
> > I don't know of a good tool to detect/fix it.
> 
> BTW, what about making sure all header files are self-contained (i.e. all
> header files include all stuff they need)? This would make it easier for the
> users to know which files to include.

I was wondering about putting in some tags in comments in the headers and
using scripts to parse them out.  Something like:

/*+
 * Provides: struct sched
 * Provides: total_forks, nr_threads, process_counts, nr_processes()
 * Provides: nr_running(), nr_uninterruptible(), nr_active(), nr_iowait(), weighted_cpuload()
 */

(you should be able to have multiple /*+ blocks in the file, multiple
Provides: lines and multiple things provided on a line.  Functions are
tagged with a trailing (), structs with the leading 'struct' and
everything else is a variable.)

Not only does that tell a script unambiguously which header needs to
be included for what function, struct definition and variable, it also
tells the programmer what header to include for what function.

This would have the benefit over automated analysis that you can put
Provides: irq_canonicalize() in <linux/interrupt.h> despite it being
actually defined in <asm/irq.h> (there's probably better examples
than this).

The script could warn for both unnecessary headers included and warn for
headers which weren't included but should be.  The warnings would start
out fairly useful and improve as we added more Provides: lines.

Anyone want to code this, or just pick holes in it?

  parent reply	other threads:[~2006-10-23  0:31 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-17  0:50 [RFC] typechecking for get_unaligned/put_unaligned Al Viro
2006-10-17  1:50 ` Linus Torvalds
2006-10-17  4:37   ` Al Viro
2006-10-17 15:12     ` Bogus deps checking (was Re: [RFC] typechecking for get_unaligned/put_unaligned) Ray Lehtiniemi
2006-10-17 15:24     ` [RFC] typechecking for get_unaligned/put_unaligned Linus Torvalds
2006-10-18  4:40       ` dealing with excessive includes Al Viro
2006-10-18  9:19         ` Alexey Dobriyan
2006-10-18  9:31           ` Al Viro
2006-10-18 10:00             ` Alexey Dobriyan
2006-10-18 17:42               ` Al Viro
2006-10-18 21:48                 ` Alexey Dobriyan
2006-10-18 15:04             ` Linus Torvalds
2006-10-18 15:13               ` Matthew Wilcox
2006-10-18 16:06               ` Al Viro
2006-10-18 16:32                 ` Linus Torvalds
2006-10-18 17:44                   ` Al Viro
2006-10-19 16:23                   ` Al Viro
2006-10-19 18:24                   ` Andreas Gruenbacher
2006-10-20  0:53                   ` Al Viro
2006-10-20  0:57                     ` Al Viro
2006-10-20 12:43                       ` Matthew Wilcox
2006-10-20  0:58                     ` Al Viro
2006-10-20  0:59                     ` Al Viro
2006-10-20  1:02                     ` Al Viro
2006-10-20  4:35                     ` Randy Dunlap
2006-10-20  9:26                       ` Stefan Richter
2006-10-20 16:13                         ` Randy Dunlap
2006-10-20 17:51                           ` Stefan Richter
2006-10-22 17:58                           ` Geert Uytterhoeven
2006-10-22 22:59                             ` Andi Kleen
2006-10-23  8:29                               ` Geert Uytterhoeven
2006-10-23 16:09                                 ` Linus Torvalds
2006-10-23 16:13                                   ` Geert Uytterhoeven
2006-10-23 16:31                                     ` Linus Torvalds
2006-10-23 16:52                                       ` Geert Uytterhoeven
2006-10-23 17:05                                         ` Linus Torvalds
2006-10-23  0:31                             ` Matthew Wilcox [this message]
2006-10-23  0:42                               ` Andi Kleen
2006-10-23  1:08                                 ` Matthew Wilcox
2006-10-23  1:31                                   ` Andi Kleen
2006-10-23  1:36                                     ` Matthew Wilcox
2006-10-23  1:41                                       ` Andi Kleen
2006-10-23  8:34                                         ` Geert Uytterhoeven
2006-10-23  1:48                                       ` Randy Dunlap
2006-10-23  1:49                                       ` Nick Piggin
2006-10-23  6:34                                         ` Stefan Richter
2006-10-18 16:15               ` Jan Engelhardt
2006-10-18 16:21                 ` Matthew Wilcox
2006-10-18  5:42     ` [RFC] typechecking for get_unaligned/put_unaligned Dave Jones
2006-10-18  6:05       ` Al Viro
2006-10-19 16:52         ` Denis Vlasenko
2006-10-19 16:58           ` Al Viro
2006-10-17  9:04 ` David Howells
2006-10-17 15:28   ` Linus Torvalds
2006-10-28 15:24 dealing with excessive includes Tim Schmielau
2006-10-30 10:45 Al Viro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061023003111.GD25210@parisc-linux.org \
    --to=matthew@wil.cx \
    --cc=adobriyan@gmail.com \
    --cc=geert@linux-m68k.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@xenotime.net \
    --cc=stefanr@s5r6.in-berlin.de \
    --cc=torvalds@osdl.org \
    --cc=viro@ftp.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome