Subject: CVS commit: src
To: None <source-changes@NetBSD.org>
From: Julio M. Merino Vidal <jmmv@netbsd.org>
List: source-changes
Date: 07/28/2004 12:34:05
Module Name:	src
Committed By:	jmmv
Date:		Wed Jul 28 12:34:05 UTC 2004

Modified Files:
	src/sbin/wsconsctl: display.c util.c wsconsctl.h
	src/share/man/man4: wscons.4 wsdisplay.4
	src/sys/arch/i386/conf: DELPHI GENERIC GENERIC_LAPTOP GENERIC_TINY
	    INSTALL INSTALL_LAPTOP IOPENER LAMB SWINGER VIRTUALPC
	src/sys/dev/ic: pcdisplay_subr.c pcdisplayvar.h vga.c
	src/sys/dev/wscons: files.wscons wsconsio.h wsdisplay.c wsdisplayvar.h
	    wsemul_sun.c wsemul_vt100.c wsemul_vt100_chars.c
	    wsemul_vt100_keys.c wsemul_vt100_subr.c wsemul_vt100var.h
	    wsemulconf.c wsemulvar.h

Log Message:
Implement support to dynamically change wscons console and kernel colors.

Two new ioctls are added to the wsdisplay device, named WSDISPLAY_GMSGATTRS
and WSDISPLAY_SMSGATTRS, used to retrieve the actual values and set them,
respectively (the name, if you are wondering, comes from "message attributes").

A new emulop is added to the underlying display driver (only vga, for now)
which sets the new attribute for the whole screen, without having to clear
it.  This is optional, which means that this also works with other drivers
that don't have this new operation.

Five new kernel options have been added, although only documented in
i386 kernels (for now):
- WSDISPLAY_CUSTOM_OUTPUT, which enables the ioctls described above to
  change the colors dynamically from userland.  This is enabled by default
  in the GENERIC kernel (as well as others) but disabled on all INSTALL*
  kernels (as this feature is useless there).
- WS_DEFAULT_COLATTR, WS_DEFAULT_MONOATTR, WS_DEFAULT_BG and WS_DEFAULT_FG,
  which specify the default colors for the console at boot time.  These have
  the same meaning as the (already existing) WS_KERNEL_* variables.

wsconsctl is modified to add msg.default.{attrs,bg,fg} and
msg.kernel.{attrs,bg,fg} to the display part, so that colors can be changed
after boot.

Tested on NetBSD/i386 with vga (and vga in mono mode), and on NetBSD/mac68k.
No objections in tech-kern@.


To generate a diff of this commit:
cvs rdiff -r1.4 -r1.5 src/sbin/wsconsctl/display.c
cvs rdiff -r1.18 -r1.19 src/sbin/wsconsctl/util.c
cvs rdiff -r1.3 -r1.4 src/sbin/wsconsctl/wsconsctl.h
cvs rdiff -r1.22 -r1.23 src/share/man/man4/wscons.4 \
    src/share/man/man4/wsdisplay.4
cvs rdiff -r1.37 -r1.38 src/sys/arch/i386/conf/DELPHI \
    src/sys/arch/i386/conf/LAMB
cvs rdiff -r1.623 -r1.624 src/sys/arch/i386/conf/GENERIC
cvs rdiff -r1.107 -r1.108 src/sys/arch/i386/conf/GENERIC_LAPTOP
cvs rdiff -r1.69 -r1.70 src/sys/arch/i386/conf/GENERIC_TINY
cvs rdiff -r1.245 -r1.246 src/sys/arch/i386/conf/INSTALL
cvs rdiff -r1.64 -r1.65 src/sys/arch/i386/conf/INSTALL_LAPTOP
cvs rdiff -r1.46 -r1.47 src/sys/arch/i386/conf/IOPENER
cvs rdiff -r1.50 -r1.51 src/sys/arch/i386/conf/SWINGER
cvs rdiff -r1.7 -r1.8 src/sys/arch/i386/conf/VIRTUALPC
cvs rdiff -r1.26 -r1.27 src/sys/dev/ic/pcdisplay_subr.c
cvs rdiff -r1.13 -r1.14 src/sys/dev/ic/pcdisplayvar.h
cvs rdiff -r1.74 -r1.75 src/sys/dev/ic/vga.c
cvs rdiff -r1.30 -r1.31 src/sys/dev/wscons/files.wscons
cvs rdiff -r1.67 -r1.68 src/sys/dev/wscons/wsconsio.h
cvs rdiff -r1.79 -r1.80 src/sys/dev/wscons/wsdisplay.c
cvs rdiff -r1.27 -r1.28 src/sys/dev/wscons/wsdisplayvar.h
cvs rdiff -r1.17 -r1.18 src/sys/dev/wscons/wsemul_sun.c
cvs rdiff -r1.25 -r1.26 src/sys/dev/wscons/wsemul_vt100.c
cvs rdiff -r1.9 -r1.10 src/sys/dev/wscons/wsemul_vt100_chars.c
cvs rdiff -r1.6 -r1.7 src/sys/dev/wscons/wsemul_vt100_keys.c
cvs rdiff -r1.16 -r1.17 src/sys/dev/wscons/wsemul_vt100_subr.c
cvs rdiff -r1.8 -r1.9 src/sys/dev/wscons/wsemul_vt100var.h \
    src/sys/dev/wscons/wsemulvar.h
cvs rdiff -r1.5 -r1.6 src/sys/dev/wscons/wsemulconf.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.