The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Frans Meulenbroeks" <fransmeulenbroeks@gmail.com>
To: linux-kernel@vger.kernel.org
Subject: including .c files ?
Date: Fri, 8 Aug 2008 13:25:36 +0200	[thread overview]
Message-ID: <ac9c93b10808080425p321fac13y72a5b2b4e67ee6a9@mail.gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 927 bytes --]

I was wondering how people feel about including .c files in other .c files.

I saw a few occasions of this.
Triggered by that observation I decided to do a grep for this (on
2.6.25.7 as that was the one I had handy at that moment).
Some 268 .c files are included.
Seems an awful lot for me.

Do people feel this is good practice?
I understand that sometimes it is useful (and then you might need to
decide on whether to include a .c file or to have a .h file with
code), but in other places it is probably less relevant.

Generally I would expect that if the .c file contains some standalone
functionality then it should probably be a .c file on its own with a
well defined interface.

Curious what others think about this.
As attachement I've added the output of the grep (slightly edited to
remove some false positives, like those from the Documentation and
scripts directories and those who are obviously comments).

Frans.

[-- Attachment #2: C_INC.txt --]
[-- Type: text/plain, Size: 14727 bytes --]

./arch/alpha/boot/misc.c:#include "../../../lib/inflate.c"
./arch/arm/boot/compressed/misc.c:#include "../../../../lib/inflate.c"
./arch/cris/arch-v10/boot/compressed/misc.c:#include "../../../../../lib/inflate.c"
./arch/cris/arch-v32/boot/compressed/misc.c:#include "../../../../../lib/inflate.c"
./arch/h8300/boot/compressed/misc.c:#include "../../../../lib/inflate.c"
./arch/ia64/ia32/binfmt_elf32.c:#include "../../../fs/binfmt_elf.c"
./arch/ia64/kernel/unwind.c:#include "unwind_decoder.c"
./arch/m32r/boot/compressed/misc.c:#include "m32r_sio.c"
./arch/m32r/boot/compressed/misc.c:#include "../../../../lib/inflate.c"
./arch/mips/kernel/binfmt_elfn32.c:#include "../../../fs/binfmt_elf.c"
./arch/mips/kernel/binfmt_elfo32.c:#include "../../../fs/binfmt_elf.c"
./arch/mn10300/boot/compressed/misc.c:#include "../../../../lib/inflate.c"
./arch/parisc/kernel/binfmt_elf32.c:#include "../../../fs/binfmt_elf.c"
./arch/ppc/boot/lib/kbd.c:#include "defkeymap.c"	/* yeah I know it's bad -- Cort */
./arch/s390/kernel/binfmt_elf32.c:#include "../../../fs/binfmt_elf.c"
./arch/sh/boot/compressed/misc_32.c:#include "../../../../lib/inflate.c"
./arch/sh/boot/compressed/misc_64.c:#include "../../../../lib/inflate.c"
./arch/x86/boot/compressed/misc.c:#include "../../../../lib/inflate.c"
./arch/x86/boot/mkcpustr.c:#include "../kernel/cpu/feature_names.c"
./arch/x86/kernel/asm-offsets.c:# include "asm-offsets_32.c"
./arch/x86/kernel/asm-offsets.c:# include "asm-offsets_64.c"
./arch/x86/mm/pageattr.c:#include "pageattr-test.c"
./drivers/atm/nicstar.c:#include "nicstarmac.c"
./drivers/block/cciss.c:#include "cciss_scsi.c"		/* For SCSI tape support */
./drivers/block/paride/bpck6.c:#include "ppc6lnx.c"
./drivers/char/ip2/ip2main.c:#include "i2ellis.c"    /* Extremely low-level interface services */
./drivers/char/ip2/ip2main.c:#include "i2cmd.c"      /* Standard loadware command definitions */
./drivers/char/ip2/ip2main.c:#include "i2lib.c"      /* High level interface services */
./drivers/isdn/hardware/eicon/capifunc.c:#include "debuglib.c"
./drivers/isdn/hardware/eicon/dadapter.c:#include "debuglib.c"
./drivers/isdn/hardware/eicon/divasfunc.c:#include "debuglib.c"
./drivers/isdn/hardware/eicon/idifunc.c:#include "debuglib.c"
./drivers/isdn/hardware/eicon/mntfunc.c:#include "debuglib.c"
./drivers/isdn/hisax/asuscom.c:#include "hscx_irq.c"
./drivers/isdn/hisax/avm_a1.c:#include "hscx_irq.c"
./drivers/isdn/hisax/avm_a1p.c:#include "hscx_irq.c"
./drivers/isdn/hisax/bkm_a4t.c:#include "jade_irq.c"
./drivers/isdn/hisax/bkm_a8.c:#include "hscx_irq.c"
./drivers/isdn/hisax/diva.c:#include "hscx_irq.c"
./drivers/isdn/hisax/elsa.c:#include "elsa_ser.c"
./drivers/isdn/hisax/elsa.c:#include "hscx_irq.c"
./drivers/isdn/hisax/gazel.c:#include "hscx_irq.c"
./drivers/isdn/hisax/ix1_micro.c:#include "hscx_irq.c"
./drivers/isdn/hisax/mic.c:#include "hscx_irq.c"
./drivers/isdn/hisax/niccy.c:#include "hscx_irq.c"
./drivers/isdn/hisax/s0box.c:#include "hscx_irq.c"
./drivers/isdn/hisax/saphir.c:#include "hscx_irq.c"
./drivers/isdn/hisax/sedlbauer.c:#include "hscx_irq.c"
./drivers/isdn/hisax/sportster.c:#include "hscx_irq.c"
./drivers/isdn/hisax/teles0.c:#include "hscx_irq.c"
./drivers/isdn/hisax/teles3.c:#include "hscx_irq.c"
./drivers/isdn/hisax/telespci.c:#include "hscx_irq.c"
./drivers/message/i2o/config-osm.c:#include "i2o_config.c"
./drivers/net/8390.c:#include "lib8390.c"
./drivers/net/arm/etherh.c:#include "../lib8390.c"
./drivers/net/ax88796.c:#include "lib8390.c"
./drivers/net/hydra.c:#include "lib8390.c"
./drivers/net/jazzsonic.c:#include "sonic.c"
./drivers/net/lasi_82596.c:#include "lib82596.c"
./drivers/net/mac8390.c:#include "lib8390.c"
./drivers/net/macsonic.c:#include "sonic.c"
./drivers/net/ne-h8300.c:#include "lib8390.c"
./drivers/net/pcmcia/ibmtr_cs.c:#include "../tokenring/ibmtr.c"
./drivers/net/sk98lin/skgepnmi.c:#include "skgemib.c"
./drivers/net/sni_82596.c:#include "lib82596.c"
./drivers/net/wan/c101.c:#include "hd6457x.c"
./drivers/net/wan/n2.c:#include "hd6457x.c"
./drivers/net/wan/pc300too.c:#include "hd6457x.c"
./drivers/net/wan/pci200syn.c:#include "hd6457x.c"
./drivers/net/wireless/hostap/hostap_cs.c:#include "hostap_hw.c"
./drivers/net/wireless/hostap/hostap_hw.c:#include "hostap_download.c"
./drivers/net/wireless/hostap/hostap_hw.c:#include "hostap_callback.c"
./drivers/net/wireless/hostap/hostap_pci.c:#include "hostap_hw.c"
./drivers/net/wireless/hostap/hostap_plx.c:#include "hostap_hw.c"
./drivers/net/zorro8390.c:#include "lib8390.c"
./drivers/scsi/a2091.c:#include "scsi_module.c"
./drivers/scsi/a3000.c:#include "scsi_module.c"
./drivers/scsi/aha1542.c:#include "scsi_module.c"
./drivers/scsi/aic7xxx_old.c:#include "aic7xxx_old/aic7xxx_seq.c"
./drivers/scsi/aic7xxx_old.c:#include "aic7xxx_old/aic7xxx_proc.c"
./drivers/scsi/aic7xxx_old.c:#include "scsi_module.c"
./drivers/scsi/arm/cumana_1.c:#include "../NCR5380.c"
./drivers/scsi/arm/oak.c:#include "../NCR5380.c"
./drivers/scsi/atari_scsi.c:#include "atari_dma_emul.c"
./drivers/scsi/atari_scsi.c:#include "atari_NCR5380.c"
./drivers/scsi/atari_scsi.c:#include "scsi_module.c"
./drivers/scsi/BusLogic.c:#include "FlashPoint.c"
./drivers/scsi/dmx3191d.c:#include "NCR5380.c"
./drivers/scsi/dpt_i2o.c:#include "scsi_module.c"
./drivers/scsi/dtc.c:#include "NCR5380.c"
./drivers/scsi/dtc.c:#include "scsi_module.c"
./drivers/scsi/eata.c:#include "scsi_module.c"
./drivers/scsi/eata_pio.c:#include "scsi_module.c"
./drivers/scsi/fdomain.c:#include "scsi_module.c"
./drivers/scsi/fd_mcs.c:#include "scsi_module.c"
./drivers/scsi/gdth.c:#include "gdth_proc.c"
./drivers/scsi/gvp11.c:#include "scsi_module.c"
./drivers/scsi/g_NCR5380.c:#include "NCR5380.c"
./drivers/scsi/g_NCR5380.c:#include "scsi_module.c"
./drivers/scsi/g_NCR5380_mmio.c:#include "g_NCR5380.c"
./drivers/scsi/in2000.c:#include "scsi_module.c"
./drivers/scsi/mac_scsi.c:#include "NCR5380.c"
./drivers/scsi/mac_scsi.c:#include "scsi_module.c"
./drivers/scsi/mvme147.c:#include "scsi_module.c"
./drivers/scsi/NCR53c406a.c:#include "scsi_module.c"
./drivers/scsi/nsp32.c:# include "nsp32_debug.c"
./drivers/scsi/pas16.c:#include "NCR5380.c"
./drivers/scsi/pas16.c:#include "scsi_module.c"
./drivers/scsi/pcmcia/aha152x_core.c:#include "aha152x.c"
./drivers/scsi/pcmcia/fdomain_core.c:#include "fdomain.c"
./drivers/scsi/pcmcia/nsp_cs.c:#include "nsp_message.c"
./drivers/scsi/pcmcia/nsp_cs.c:#include "nsp_debug.c"
./drivers/scsi/qlogicpti.c:#include "qlogicpti_asm.c"
./drivers/scsi/sun3_scsi.c:#include "sun3_NCR5380.c"
./drivers/scsi/sun3_scsi.c:#include "scsi_module.c"
./drivers/scsi/sun3_scsi_vme.c:#include "sun3_NCR5380.c"
./drivers/scsi/sun3_scsi_vme.c:#include "scsi_module.c"
./drivers/scsi/sym53c416.c:#include "scsi_module.c"
./drivers/scsi/t128.c:#include "NCR5380.c"
./drivers/scsi/t128.c:#include "scsi_module.c"
./drivers/scsi/u14-34f.c:#include "scsi_module.c"
./drivers/scsi/ultrastor.c:#include "scsi_module.c"
./drivers/scsi/wd7000.c:#include "scsi_module.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-dbg.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-hub.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-mem.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-q.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-sched.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-pci.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-fsl.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-au1xxx.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-ps3.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-ppc-soc.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-ppc-of.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-orion.c"
./drivers/usb/host/ehci-hcd.c:#include "ehci-ixp4xx.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-hub.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-dbg.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-mem.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-q.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-pci.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-sa1111.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-s3c2410.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-omap.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-lh7a404.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-pxa27x.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-ep93xx.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-au1xxx.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-pnx8550.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-ppc-soc.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-at91.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-pnx4008.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-sh.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-ppc-of.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-ps3.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-ssb.c"
./drivers/usb/host/ohci-hcd.c:#include "ohci-sm501.c"
./drivers/usb/host/uhci-hcd.c:#include "uhci-debug.c"
./drivers/usb/host/uhci-hcd.c:#include "uhci-q.c"
./drivers/usb/host/uhci-hcd.c:#include "uhci-hub.c"
./fs/compat_binfmt_elf.c:#include "binfmt_elf.c"
./fs/minix/itree_v1.c:#include "itree_common.c"
./fs/minix/itree_v2.c:#include "itree_common.c"
./init/do_mounts_rd.c:#include "../lib/inflate.c"
./init/initramfs.c:#include "../lib/inflate.c"
./kernel/sched.c:#include "sched_idletask.c"
./kernel/sched.c:#include "sched_fair.c"
./kernel/sched.c:#include "sched_rt.c"
./kernel/sched.c:# include "sched_debug.c"
./lib/reed_solomon/reed_solomon.c:#include "encode_rs.c"
./lib/reed_solomon/reed_solomon.c:#include "decode_rs.c"
./lib/reed_solomon/reed_solomon.c:#include "encode_rs.c"
./lib/reed_solomon/reed_solomon.c:#include "decode_rs.c"
./net/netfilter/nf_conntrack_h323_asn1.c:#include "nf_conntrack_h323_types.c"
./sound/core/control.c:#include "control_compat.c"
./sound/core/hwdep.c:#include "hwdep_compat.c"
./sound/core/pcm_native.c:#include "pcm_compat.c"
./sound/core/rawmidi.c:#include "rawmidi_compat.c"
./sound/core/seq/seq_clientmgr.c:#include "seq_compat.c"
./sound/core/timer.c:#include "timer_compat.c"
./sound/isa/cs423x/cs4232.c:#include "cs4236.c"
./sound/isa/gus/interwave-stb.c:#include "interwave.c"
./sound/isa/opti9xx/opti92x-cs4231.c:#include "opti92x-ad1848.c"
./sound/isa/opti9xx/opti93x.c:#include "opti92x-ad1848.c"
./sound/isa/sb/sbawe.c:#include "sb16.c"
./sound/isa/wavefront/wavefront_fx.c:#include "yss225.c"
./sound/oss/msnd_classic.c:#include "msnd_pinnacle.c"
./sound/oss/msnd_classic.h:#  include "msndperm.c"
./sound/oss/msnd_classic.h:#  include "msndinit.c"
./sound/oss/msnd_pinnacle.h:#  include "pndsperm.c"
./sound/oss/msnd_pinnacle.h:#  include "pndspini.c"
./sound/pci/ac97/ac97_codec.c:#include "ac97_patch.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_core.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_pcm.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_mixer.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_mpu401.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_game.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_eq.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_a3d.c"
./sound/pci/au88x0/au8810.c:#include "au88x0_xtalk.c"
./sound/pci/au88x0/au8810.c:#include "au88x0.c"
./sound/pci/au88x0/au8820.c:#include "au88x0_synth.c"
./sound/pci/au88x0/au8820.c:#include "au88x0_core.c"
./sound/pci/au88x0/au8820.c:#include "au88x0_pcm.c"
./sound/pci/au88x0/au8820.c:#include "au88x0_mpu401.c"
./sound/pci/au88x0/au8820.c:#include "au88x0_game.c"
./sound/pci/au88x0/au8820.c:#include "au88x0_mixer.c"
./sound/pci/au88x0/au8820.c:#include "au88x0.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_synth.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_core.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_pcm.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_mixer.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_mpu401.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_game.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_eq.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_a3d.c"
./sound/pci/au88x0/au8830.c:#include "au88x0_xtalk.c"
./sound/pci/au88x0/au8830.c:#include "au88x0.c"
./sound/pci/au88x0/au88x0_a3d.c:#include "au88x0_a3ddata.c"
./sound/pci/au88x0/au88x0_eq.c:#include "au88x0_eqdata.c"
./sound/pci/echoaudio/darla20.c:#include "darla20_dsp.c"
./sound/pci/echoaudio/darla20.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/darla20.c:#include "echoaudio.c"
./sound/pci/echoaudio/darla24.c:#include "darla24_dsp.c"
./sound/pci/echoaudio/darla24.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/darla24.c:#include "echoaudio.c"
./sound/pci/echoaudio/echo3g.c:#include "echo3g_dsp.c"
./sound/pci/echoaudio/echo3g.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/echo3g.c:#include "echoaudio_3g.c"
./sound/pci/echoaudio/echo3g.c:#include "echoaudio.c"
./sound/pci/echoaudio/echo3g.c:#include "midi.c"
./sound/pci/echoaudio/gina20.c:#include "gina20_dsp.c"
./sound/pci/echoaudio/gina20.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/gina20.c:#include "echoaudio.c"
./sound/pci/echoaudio/gina24.c:#include "gina24_dsp.c"
./sound/pci/echoaudio/gina24.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/gina24.c:#include "echoaudio_gml.c"
./sound/pci/echoaudio/gina24.c:#include "echoaudio.c"
./sound/pci/echoaudio/indigo.c:#include "indigo_dsp.c"
./sound/pci/echoaudio/indigo.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/indigo.c:#include "echoaudio.c"
./sound/pci/echoaudio/indigodj.c:#include "indigodj_dsp.c"
./sound/pci/echoaudio/indigodj.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/indigodj.c:#include "echoaudio.c"
./sound/pci/echoaudio/indigoio.c:#include "indigoio_dsp.c"
./sound/pci/echoaudio/indigoio.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/indigoio.c:#include "echoaudio.c"
./sound/pci/echoaudio/layla20.c:#include "layla20_dsp.c"
./sound/pci/echoaudio/layla20.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/layla20.c:#include "echoaudio.c"
./sound/pci/echoaudio/layla20.c:#include "midi.c"
./sound/pci/echoaudio/layla24.c:#include "layla24_dsp.c"
./sound/pci/echoaudio/layla24.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/layla24.c:#include "echoaudio_gml.c"
./sound/pci/echoaudio/layla24.c:#include "echoaudio.c"
./sound/pci/echoaudio/layla24.c:#include "midi.c"
./sound/pci/echoaudio/mia.c:#include "mia_dsp.c"
./sound/pci/echoaudio/mia.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/mia.c:#include "echoaudio.c"
./sound/pci/echoaudio/mia.c:#include "midi.c"
./sound/pci/echoaudio/mona.c:#include "mona_dsp.c"
./sound/pci/echoaudio/mona.c:#include "echoaudio_dsp.c"
./sound/pci/echoaudio/mona.c:#include "echoaudio_gml.c"
./sound/pci/echoaudio/mona.c:#include "echoaudio.c"
./sound/pci/ens1371.c:#include "ens1370.c"
./sound/pci/nm256/nm256.c:#include "nm256_coef.c"
./sound/usb/usbmixer.c:#include "usbmixer_maps.c"
./sound/usb/usx2y/usx2yhwdeppcm.c:#include "usbusx2yaudio.c"

             reply	other threads:[~2008-08-08 11:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-08 11:25 Frans Meulenbroeks [this message]
2008-08-08 14:30 ` including .c files ? Krzysztof Halasa
2008-08-08 15:05   ` Chris Friesen
2008-08-08 15:46     ` Krzysztof Halasa
2008-08-08 15:36 ` Rene Herman
2008-08-08 19:13   ` H. Peter Anvin

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=ac9c93b10808080425p321fac13y72a5b2b4e67ee6a9@mail.gmail.com \
    --to=fransmeulenbroeks@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    /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