just thinking about it.
Two changes need to be made to allow 'config kernel swap generic' to
work properly without requiring any compile-time flags:
/usr/src/usr.sbin/config/mkswapconf.c: we need to define a dummy stub
for the setconf() function to replace the one in swapgeneric.c that
isn't available in non-generic configurations.
/usr/src/sys/i386/i386/autoconf.c: the -a boot flag causes setroot()
to be skipped and lets setconf() prompt the user for a root device.
If you skip setroot() in a non-generic kernel, you could get severely
hosed. To avoid this, we silently ignore the -a flag if rootdev != NODEV.
(rootdev is always initialized to NODEV in swapgeneric.c, so if
we find that rootdev is something other than NODEV, we know we're
not using a generic configuration.)
Support slice numbers in device names. The syntax is `<driver name>
[<unit number>] ['s' <slice number>] [<partition letter>]'. Only
`['s' <slice number>]' is new here. The slice number defaults to 0
so that there is no change in the output from config if this new
feature is not used.
Replace some magic disk numbers by `dk' slice and label macros.
mkswapconf.c:
Improve the output formatting:
Generate <> style includes.
Print minor numbers in hex so that slice numbers are easy to see and edit.
Print the rootdev and dumpdev names in comments like the swapdev names.
for ioconf.c with the current and suppress the generation if they are
equal. This now prevents all the warnings from the c-compiler about
sio or snd or two adaptecs. This works only if the sio lines are grouped
together in the config files, but it is better than nothing.
/*
* filename [ standard | optional ] [ config-dependent ]
* [ dev* | profiling-routine ] [ device-driver] [ no-obj ]
* [ compile-with "compile rule" [no-implicit-rule] ]
* [ dependancy "dependancy-list"]
*/
I added
no-obj - This entry does not create anything linkable to the kernel.
dependancy - Add additional dependancy rules to a target.
no-implicit-rule - Don't assume .c -> .o type rules. Config is really
dumb in this area and assumes that everything is a .c file
irregarless of extention. This was the best choice really
since there may even be .c file that you don't want to follow
the standard rules.
This was all done so that the building to the aic7770 assembler and using
the aic7770 assembler in the building of the aic7770 driver could be config
dependant. I can now have an entry like this for the driver:
aic7770 optional ahc device-driver \
compile-with "${CC} $> -o $@" \
dependancy "$S/gnu/misc/aic7770/aic7770.c" \
no-obj no-implicit-rule
aic7770_seq.h optional ahc device-driver \
compile-with "${.CURDIR}/aic7770 -o $@ $S/gnu/misc/aic7770/aic7770.seq"\
dependancy "$S/gnu/misc/aic7770/aic7770.seq aic7770" \
no-obj no-implicit-rule
i386/isa/aic7770.c optional ahc device-driver \
dependancy "aic7770_seq.h"
I also added '\' escaping to newlines so that this doesn't look as gross as
it could have.
Reviewed by: jkh
Also initialize some fields that were never initialized before, and
simply defaulted to 0. I've never looked at this code before, now
I know why. Config needs to die. Horribly.
conditional did it backwards, thus flipping the behavior back off
again by default (and only re-enableable through a very counter-intuitive
option setting!). I'm glad I caught this and would merely like to state
again for the record that if you're going to go and modify my changes then
you should at least:
1. Do it correctly, since to do otherwise is kind of a slap in the
face.
2. TELL me.
This is not me just being compulsive, this is simple courtesy.
I'm speaking just of my own preferences here, not necessarily trying
to impose my standards on the group at large (e.g. some other folks might
not even care).
Submitted by: jkh
and recreate any previous ../../compile/<blah> directory before laying
down new files. The depends just aren't smart enough to save
us from the grief that config's old behavior has always caused.
Submitted by: jkh
/usr/src/usr.sbin.config:
o -DSTATCLOCK gives kludges to support the rtc non-device as well as
old kludges to support the clk non-device.
/usr/src/usr.sbin/config.8:
o Document the trivialness of the new vector.h.
/usr/src/usr.sbin/mkglue.c:
o Only print DEVICE_NAMES and NR_DEVICES in vector.h. These are
only required to support vmstat. The vmstat interface will need
to be improved for dynamic loading.
/usr/src/usr.sbin/mkioconf.c:
o Print device ids to be used as indexes into DEVICE_NAMES.
o Print secondary interrupt handler entry points (xxxintr()) instead
of primary ones (VdevU()). Primary ones are now XintrI() and
XfastintrI() and are independent of the config so they are not
handled here.
o Minor cleanups.
Submitted by: Bruce Evans