Subject: Re: Adding bootverbose
To: None <dolecek@ibis.cz, sommerfeld@orchard.arlington.ma.us>
From: Chris Torek <torek@BSDI.COM>
List: tech-kern
Date: 07/10/2000 19:20:24
Just FYI, BSD/OS has four (!) levels, all set by the -autodebug
parameter to boot:
-autodebug -d
Debug mode. Enormously verbose; useful for "why doesn't this
configuration work" problems. (More useful for binary-only systems
than source, really.)
-autodebug -q
Quiet mode. One line per device that says something inocuous like:
"com0 at isa0: serial port" or "de0 at pci0: Ethernet". Good for
naive users who just want to know that the Ethernet card they stuck
in is showing up, and have no idea what the differences between a
3C905 and 3C905 and 3C905B and ... are.
(no flags)
Default "normal" mode, pretty much what we get today.
-autodebug -v
Verbose mode. Print whatever detailed info the driver writer thought
was relevant (e.g., which chip the 3C905 has this nanosecond), but not
as chatty as -d.
There are -a and -p flags for the i386 as well (see below).
These are all done inside driver files with calls to:
printf (stuff that comes out in all modes)
aprint_debug (debug-only info)
aprint_naive (stuff that comes out only for -q)
aprint_normal (stuff that gets suppressed by -q)
aprint_verbose (stuff that comes out only for -v)
For instance, the BSD/OS "aic" driver has, in effect, in aicattach():
printf("\n");
aprint_debug("%s: external cable %spresent\n",
sc->sc_xname, external ? "" : "not ");
aprint_debug("%s: internal 50 pin cable %spresent\n",
sc->sc_xname, internal_50 ? "" : "not ");
...
aprint_verbose("%s: initiator id %d parity ", sc->sc_xname, sc->sc_id);
if ((sc->sc_parity = getparm(sc->sc_xname, PARM4_AIC_PARITY, ~0)) != 0)
aprint_verbose("enabled");
else
aprint_verbose("disabled");
if ((sc->sc_activeneg = getparm(sc->sc_xname, PARM4_AIC_ACTNEG, 1)))
aprint_verbose(", active negation enabled\n");
else
aprint_verbose(", active negation disabled\n");
This all seems to work pretty well.
The -autodebug flags are passed as boot parameter B_AUTODEBUG:
#define B_AUTODEBUG 5 /* int: autoconfiguration debug value */
#define AC_DEBUG 0x01 /* -d print debug per probe, page output */
#define AC_ASK 0x02 /* -a ask/print debug per device probe */
#define AC_QUIET 0x04 /* -q quieter per-device autoconf output */
#define AC_VERBOSE 0x08 /* -v verbose per-device autoconf output */
#define AC_PAGE 0x10 /* -p page autoconf output */
Chris