Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jan 1997 14:23:10 -0800 (PST)
From:      Simon Shapiro <Shimon@i-Connect.Net>
To:        Don Yuniskis <dgy@rtd.com>
Cc:        freebsd-hackers@freefall.freebsd.org, (Bruce Evans) <bde@zeta.org.au>
Subject:   Re: suggestion for kernel printk() ?
Message-ID:  <XFMail.970127153007.Shimon@i-Connect.Net>
In-Reply-To: <199701252032.NAA20427@seagull.rtd.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Hi Don Yuniskis;  On 25-Jan-97 you wrote: 
> It seems that Bruce Evans said:
> > 
> > >     I just spent some time fighting a kernel that died miserably
> > >on boot  :-(  I was inundated with an endless stream of kernel
> > >messages (in highlighted text) followed promptly by a hard reset.
> > >It was quite frustrating to find that there doesn't seem to be a
> > >mechanism to pause the display at this point!
> > 
> > I use a serial console and `terminalprogram | tee foo' to capture
> > the output.
> 
> Yes, but I would have had to have built the kernel with COMCONSOLE
> (which I didn't).
> 
> > >     OK, reboot from /kernel.old and look through the logs.  Hmmm...
> > >nothing here!  Probably the filesystem wasn't even functional when
> > >the boot ran into trouble.
> > 
> > Boot messages are supposed to be preserved in the message buffer
> > across reboots.  However, many PC BIOSes and/or memory systems do
> > something that invalidates the message buffer even for a soft reboot.
> 
> Well, I wasn't observant enough to notice what type of restart the
> PC went through (two different varieties here -- one of which actually
> rampages through memory, etc.) but suspect this is the problem.
> 
> However, is it worthwhile for the mechanism that printk()  ?? uses to
> observe some kind of flow control?  It did not recognize scroll_lock,
> pause, ^S, etc.  This would have at least enabled me to read some
> (i.e. one screen full) of the messages to see what the kernel was
> complaining about.

I may be offbase here, but scroll-lock, etc. are INPUT, while printk is
output.  No?  Maybe a (oops :-) SysV-like mechanism where print{kf} go to
a circular buffer andanother mechanism dumps it to ``the console''.
If you like ugly, (if memory serves), you can either pass an additional arg
to the output routine (A la Linux) or designate the first character in the
string to tell what to do, as in ~==console and buffer, !=bufferonly, etc.

Simon



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