asynchronously, in the same style like the process attach/detach functions
-intercept the "cnpollc" call which originally went directly to the
keyboard driver and keep track whether the console is in "polling" state
(DDB!)
-pass a NULL callback to the screen switcher and the process attach/detach
functions if the console is "polling", to tell them that asynchronous
completion is forbidden
and one which isn't. The latter is now used for ttyEcfg, enabling the
VT-switching ioctls to work on it. (This allows Linux X servers to work when
/emul/linux/dev/tty0 is linked to /dev/ttyEcfg.)
WSDISPLAY_DEFAULTSCREENS or 0 if it's not defined) and use it instead
of WSDISPLAY_DEFAULTSCREENS as approptiate, so that number of screens
added on bootup is patchable
move printing of info about added screen into separate routine and
print just one message for all screens added in wsdisplay_common_attach(),
such as:
wsdisplay0: screen 1-7 added (80x25, vt100 emulation)
while here, do minor const poisoning
Reviewed by: drochner
Tested by: jdolecek
by removing the "| wsdisplay" from the wsmux.c file declaration. This
will cause any kernel which includes wsdisplay but not wsmux explicitly
to fail to link, but at least those of us with multiple wsdisplays on
a single machine can build kernels again.
headaches.
Now console keyboard and display are connected at autoconfiguration time,
when the last of them is found. Other keyboards / displays remain
unconnected until a new ioctl (WSDISPLAYIO_SETKEYBOARD) is called.
autoconfiguration time; this can be done better from rc.local.
(For INSTALL kernels, WSDISPLAY_DEFAULTSCREENS can be defined which
sets up that many screens with default parameters.)
contiguous chunk of outq to emulation routine. Fix based on patch
from M. Drochner, modified to call output routine once with each
contiguous chunk when the ring buffer wraps around.
improvement in the "cat /usr/share/misc/termcap" benchmark on 486/75
ttwrite queues data for us in OBUFSIZ chunks. If we only consume
OBUFSIZ-1 bytes per call to wsdisplaystart(), we're *guaranteed* to
fall behind when given maximum-sized reads (which will defer
processing the leftovers until ttrstrt gets called, after a timeout)
Note that OBUFSIZ*4 may be overkill; OBUFSIZ*3 may be sufficient to
get maximal performance; OBUFSIZ*2 resulted in only about a 2.5x
performance improvement, but it's 2am and I've done enough tweaking
for the night.