Commit Graph

18 Commits

Author SHA1 Message Date
agc
326b2259b7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22366, verified by myself.
2003-08-07 11:25:11 +00:00
thorpej
bd86bbe5e9 Add support for specifying attributes as option-dependencies,
allowing for the following:

file foo.c	foobar | bar

defflag BAR

device foobar

...to be expressed in the following (more natural) way:

define foo
file foo.c	foo

defflag BAR: foo

device foobar: foo
2002-10-11 01:48:25 +00:00
thorpej
1f5fa983ab Add support for specifiying attribute dependencies on attributes. This
allows for the following:

define foo
define bar { }: foo

device foobar: bar

An instance of "foobar" will select "bar", which will in turn select
"foo" due to "bar"'s dependency on "foo".

Circular dependencies are not allowed, and a dependency may also not
be an interface attribute.
2002-10-09 20:17:00 +00:00
gehenna
77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
lukem
90028da4e1 Functionality improvements:
- Add `no' keyword, which can be used in the following ways:
	no file-system SOMEFS
	no makeoptions FOO
	no options OPT1[,OPT2[,...]]
	no pseudo-device somepseudo
  This turns off a previous file-system/makeoptions/options/pseudo-device
  entry for the same item.
  Grammar support for 'no device DEV at ATTACH' added, but not
  implemented yet.

Code changes:
- Convert many simple lists to TAILQs
- Convert prefix to SLIST
- Remove argument names from prototypes.
- Don't bother with custom alloc code for hashtables; just use emalloc()
  like everything else.
- Implement ht_remove(), to remove an entry from a hash table.
  Add removed entries to a freelist for later reuse.
- Don't selectbase() devices and pseudo-devices at definition time; instead
  do it at one pass after the config file has been parsed in fixdevis().
- Rename nvhead to nvfreelist; a more apt name...
- Minor code cleanups.
2002-06-05 10:56:17 +00:00
cgd
463d864ef0 nuke __P, and convert all functions to use ANSI-style declarations.
Also, do a few trivial KNF cleanups (e.g. newline at start of fn if no
locals).  Verified to have no effect via diff on new and old compiled
binaries.
2000-10-02 19:48:34 +00:00
hubertf
764307a5a1 Keeping my kernel config files under RCS control, I always wished to
have a way to embed the revision number into the kernel's "uname -v"
output. The patch below does this, by generating a new keyword "ident"
that can be followed by any string, e.g.

        ident   "NOON-$Revision$"

will lead to
                                           vvvvvvvvvvvvvvvvvvvvvv
        char version[] =     "NetBSD 1.4P (NOON-$Revision: 1.21 $) #37: Thu Jan
20 02:01:23 MET 2000\n    feyrer@noon:/usr/cvs.local/src-current/sys/arch/i386/c
ompile/NOON\n";

This will lead to a version of "MYMACHINE-$Revision$" instead of the
kernel config file name. If "ident" is not present, the current behaviour
of using the kernel config file's name as identifier is used.

Implement by writing the ident to a file ("ident") in the compile dir,
which newvers.sh will pick up for generating the ident.
2000-01-23 23:37:42 +00:00
thorpej
ea4d1b7ea1 Rather than using a separate "class" keyword, treat device classes like
special attributes.  From Chris Demetriou.
1998-02-16 22:05:35 +00:00
thorpej
bc1733bc88 Add code to emit the cfdriver structures into ioconf.c. This requires
a change to the config grammar, to specify a device's class (i.e. DV_xxx)
like:

device	sd class disk: ...

Also emit an ioconf.h, which contains extern declarations of the
cfdriver structures.

While I'm here, add support for specifying multiple options per defopt
line, as well as specifying the file name in which the options will
appear.

defopt	foo bar baz

generates "opt_foo.h", "opt_bar.h", and "opt_baz.h"

defopt	opt_mumble.h foo bar baz

generates "opt_mumble.h" which contains all three options.

Also, clean up and fix some bugs in the code that generates header files.
1998-01-12 07:37:40 +00:00
thorpej
9fec93804a Changes to config(8) to support dump configuration in the wake of the
new swap system.  The dump specification syntax is now more flexible,
and supports constructs like the following:

config netbsd root on ? type ? dumps on ?
	- wildcarded root, fstype, and dump device

config netbsd root on ? type ffs dumps on sd0b
	- wildcarded root, ffs root fs, always dump on sd0b

config netbsd root on de0 type nfs dumps on wd0b
	- mount an nfs root using de0, and write kernel crash dumps
	  to wd0b

Also, garbage-collect some now unused code, now that swap configuration
is no longer handled by config(8).
1997-06-14 04:25:55 +00:00
thorpej
267e8357fc Implement an unfortunate, and temporary, kludge to address the problem
reported in PR #3668 from maximum entropy <entropy@tanstaafl.bernstein.com>.

The problem: The unit number is not being conveyed to the configuration
crosscheck with root is a network interface; the device number is set
to NODEV, which sets up the (correct) defaults for swap/dump devices.
We can't change NODEV to a unit number, as the PR's patch suggests, as
this breaks the swap/dump defaults.  Rewriting that code is not really
justified, since it's soon to be obsoleted.

The kludge: add an "nv_ifunit" member to struct nvlist, which convey's
a network interface's unit number to the crosscheck routine.  It's not
pretty, but it's not terribly invasive, and can be garbage-collected
easily when the swap/dump goo is obsoleted.
1997-05-25 18:42:54 +00:00
thorpej
07c71aa7f7 Implement new grammar and semantics for specifying file systems
and the root device:

- New "file-system" keyword is used to configure file systems into
  the kernel.
- New way of specifying root device, which allows root file system
  type to always be specified.  Examples:

	config gennetbsd swap generic
	config sdnetbsd root on sd0a swap on sd0b
	config nfsnetbsd root on nfs

  are replaced by:

	config gennetbsd root on ? type ?
	config sdnetbsd root on sd0a type ffs swap on sd0b
	config nfsnetbsd root on ? type nfs
	config lenetbsd root on le0 type nfs

  Note that specific network interfaces may now be specified as
  the root device.
- swapgeneric.c is no longer used; generate a swap*.c file for each
  "config" line in the kernel configuration file.
1997-01-31 03:12:30 +00:00
gwr
1ed260c698 Move some externs to where they are needed. 1996-11-11 23:40:09 +00:00
mycroft
8441b8f88d Remove interrupt vector handling. This is done dynamically by all ports now. 1996-08-31 21:15:05 +00:00
cgd
9c4f9d2daa spaces vs. tabs, spaces/tabs at EOL bogons. 1996-03-17 06:29:19 +00:00
thorpej
cb6211e540 New device attachment scheme:
- split softc size and match/attach out from cfdriver into
	  a new struct cfattach.

	- new "attach" directive for files.*.  May specify the name of
	  the cfattach structure, so that devices may be easily attached
	  to parents with different autoconfiguration semantics.
1996-03-17 02:08:22 +00:00
thorpej
c5f7cf3a9e RCS id police. 1996-03-03 17:21:25 +00:00
cgd
064307e690 config.new has been moved here. names updated to match. 1995-04-28 06:54:58 +00:00