Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 Nov 1998 18:41:11 +0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Doug Rabson <dfr@nlsystems.com>
Cc:        Mike Smith <mike@smith.net.au>, Garrett Wollman <wollman@khavrinen.lcs.mit.edu>, Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>, sos@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sys/modules/syscons saver.h ... 
Message-ID:  <199811051041.SAA05859@spinner.netplex.com.au>
In-Reply-To: Your message of "Thu, 05 Nov 1998 09:06:58 GMT." <Pine.BSF.4.01.9811050904451.19324-100000@herring.nlsystems.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
Doug Rabson wrote:
> On Wed, 4 Nov 1998, Mike Smith wrote:
[..]
> > I'm still very much of the opinion that stuff shouldn't have to be 
> > mentioned in the config file at all; that all that the config file 
> > specifies is what gets aggregated into the kernel object.
> 
> I agree about that.  The description of what is attached to what is
> correct though.

I've been thinking..  It shouldn't be all that hard to have "modules" 
built in the same place as the kernel, but I can't think of a good 
variation of syntax for config(8).

Consider all those opt_*.h files.  It would be nice to be able to use the 
ones from the corresponding kernel rather than having to second guess 
things.

I mentioned this to Mike some time ago and his comment was equivalent to
'aargh!'.

The way I see it, we need:
 - something that resembles config syntax where practical to minimize 
culture shock.
 - NOT having to specify (redundant) configuration heirarchies - this is 
coded within the source, there is no need to duplicate it in the config 
file.
 - make it module aware; specify what goes into the static kernel, what 
goes into modules, and what goes into both.
 - modules and kernel could/would be serialized so that kernel/module 
mismatches could be detected.
 - it should NOT build in the source tree but in an obj dir.

I originally thought about having isa and static configuration 
information, but I now think that is a job for the boot loader and 
userconfig (also in the boot loader) to pass in the configuration.  ISA 
config could/should be based from a text file pulled in by the loader.

All that we'd be left with was effectively a 'packing list' of what to 
build and with what options and in what form (kernel, module etc).

In fact, I wonder if it might be possible to go from the other direction 
and specify what components get build and how to package them; ie 
something like this:

# GENERIC

machine         "i386"
cpu             "I386_CPU"
cpu             "I486_CPU"
cpu             "I586_CPU"
cpu             "I686_CPU"
maxusers        32

options	COMPAT_43
options	SCSI_DELAY=3000
options	FAILSAFE

kernel {
	ident   GENERIC
	proto	inet
	vfs	ffs
	vfs	mfs
	vfs	nfs
	vfs	procfs
	bus	rootbus
	bus	isa
	bus	eisa
	bus	pci
	device	fdc
	disk	fd			# dynamic
	tape	ft			# dyanmic
	device	wdc0
	device	wdc1
	disk	wd0 at wdc0 unit 0	# hardwired
	disk	wd			# dynamic
	disk	wcd
	disk	wfd
	bus	scbus
	disk	da			# dynamic
	device	ncr
	device	ahc
	...
	device	de
	device	tun32			# specifically 32 units
};

module nfs;		# use a default list of components
module mystuff {
	vfs	ext2fs
	emul	linux
};
module coda {		# presumably this would also be defaulted.
	vfs	coda
	device	codadev
};
module default;		#build all default modules

Obviously there would be a list of files that build "vfs ext2fs" etc, and 
a default list of known modules and default contents for convenience.  For 
example, "module nfs;" would have an implied default set of contents.  It 
would be functionally equivalent to:
module nfs {
	vfs nfs;
}

"module all" would build all known modules.  this probably wouldn't be 
attractive since you'd almost be building enough modules to make a runtime 
LINT kernel.

The kernel "knows" internally that fd devices attach to the fdc bus, etc.  
At least, it will under Doug's system when it gets implemented.  You would 
not need to specifically specify that 'fd0 hangs off fdc0'.  However, 
there are legitimate instances where hardwiring of units makes sense.

The other key thing is that the packaging is pretty much freeform, as long 
as you obey the basic rules.  The backing system rules file might specify 
inter-module dependencies or prerequisites for linking - for example 
"device codadev" depends on "vfs coda".  If you built them into seperate 
modules, the module containing codadev would automatically get a 
dependency on the module containing the coda vfs, etc.  Doing a 'kldload 
codadev' would automatically pull in the coda module etc.

Obviously I've just invented the syntax without much thought, but you get 
the idea.

Cheers,
-Peter



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811051041.SAA05859>