Home | History | Annotate | Download | only in wscons
History log of /src/sys/dev/wscons/wsemul_sun.c
RevisionDateAuthorComments
 1.34  01-Jan-2022  hannken Protect KASSERT() with "#ifdef DIAGNOSTIC" as its expression is
undefined otherwise.
 1.33  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.32  03-Nov-2017  maya branches: 1.32.2; 1.32.4;
Use c99 initializer for wsemul_ops
 1.31  03-Nov-2017  maya Don't #ifdef DIAGNOSTIC around KASSERTs.

the definition of KASSERT does the same thing
 1.30  19-May-2017  macallan add support for loading fonts in vcons and subsequently resizing screens
- drivers can use this by setting VCONS_LOADFONT and WSSCREEN_RESIZE
- each vcons screen can now have its own font and geometry
- while there, add support for xterm's ESC[18t to report the text buffer's
size

With this tou can:
wsfontload -N foo /usr/share/wscons/fonts/flori.816
wsconsctl -dw font=foo
currently this is limited to drivers that don't use the glyph cache, like genfb
 1.29  08-Nov-2015  christos Untangle.
 1.28  12-Mar-2010  jdc branches: 1.28.20; 1.28.38;
Add mappings for KS_End/KS_KP_End, so that the `End' key actually does
something.
 1.27  28-Jan-2010  drochner branches: 1.27.2;
-rename the "KS_GROUP_Ascii" key symbol category to "Plain" because
this is what it meant all the time -- it includes characters >127
-delegate translation of all key symbols >127 to the terminal emulation
layer -- formerly everything non-special was passed to the tty subsystem
directly, involving truncation to a "char", which effectively meant
some ISO-1 assumption
 1.26  16-Nov-2006  christos branches: 1.26.52; 1.26.64; 1.26.72;
__unused removal on arguments; approved by core.
 1.25  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.24  28-Aug-2006  christos branches: 1.24.2; 1.24.4;
fix incomplete struct decl.
 1.23  11-Dec-2005  christos branches: 1.23.4; 1.23.8;
merge ktrace-lwp.
 1.22  30-May-2005  christos branches: 1.22.2;
add const.
 1.21  30-May-2005  martin Adapt to recent constification.
 1.20  25-May-2005  martin If the driver supports reverse, try that first - even on color displays.
This removes a XXX and makes us independent of the users default colors.
 1.19  03-Aug-2004  he branches: 1.19.10;
Remove include of "opt_wsmsgattrs.h" here, since that's already done
by wsdisplayvar.h. Fixes build problem for sparc.
 1.18  28-Jul-2004  jmmv 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@.
 1.17  27-Sep-2002  provos branches: 1.17.6;
remove trailing \n in panic(). approved perry.
 1.16  09-Jul-2002  junyoung switch/case KNF.
 1.15  04-Jul-2002  junyoung alloc_attr -> allocattr

Approved by Matthias Drochner.
 1.14  14-Oct-2001  veego branches: 1.14.10;
Fix a pasto in the last revision.
 1.13  13-Oct-2001  augustss ANSIfy.
 1.12  21-Feb-2001  jdolecek branches: 1.12.2; 1.12.4;
don't panic if there is ESC in kernel output, just print a warning and
ignore the ESC; also remove the #ifdef DIAGNOSTIC
 1.11  05-Jan-2000  drochner replace embedded _rcsid[] string by __KERNEL_RCSID(), remove _copyright[]
 1.10  17-Jan-1999  drochner branches: 1.10.8;
define a "clear screen" command to the emulator and complete the
emulation's "reset" implementations as far as useful
 1.9  10-Jan-1999  augustss Change from bcopy/bzero to memxxx. From PR 6778 by
Erik Bertelsen <erik@q610.ebe.uni-c.dk>.
 1.8  20-Jun-1998  drochner Change the calling interface for text output (to the graphics driver)
to take a single character at a time, where the character is an "int" now.
The old interface (took a string) was never called with more than 1
char to print, and the "int" allows us to handle charsets cleanly.
 1.7  20-Jun-1998  drochner add some more ASCII definitions, move NP->FF for consistency
 1.6  15-Jun-1998  drochner Move the translation of keypad and function keys into the realm of the
terminal emulation. For this, change the interface to wsdisplay_kbdinput()
to take a "keysym_t" as argument. From there, the code is handed to the
appropriate emulation module via a new entry point: "translate".
Nuke the ioctls dealing with global assignment of character sequences
to keypad/function keys.
The "sun" emulation works much better now!
 1.5  24-May-1998  drochner fix "Cursor Next Line (CNL)" (did the opposite)
 1.4  19-May-1998  drochner Initialize the "curattr" member of the emulation data in early console
setup -- it is used to fill empty space.
Fixes 2/3 of PR kern/5457 (Jason Thorpe).
 1.3  14-May-1998  drochner Simple screen attribute handling for wscons.
The graphics device driver passes a "default attribute" for normal text
output to the wscons framework. If the emulation module needs more
attributes (for different "renditions") it can allocate them via a
callback.
For now, only the "sun" emulation makes use of it.
 1.2  27-Mar-1998  drochner fix max() vs min() confusion at 2 places
 1.1  22-Mar-1998  drochner Initial import of cgd's new wscons code.
 1.10.8.2  12-Mar-2001  bouyer Sync with HEAD.
 1.10.8.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.12.4.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.12.4.2  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.12.4.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.2.3  18-Oct-2002  nathanw Catch up to -current.
 1.12.2.2  01-Aug-2002  nathanw Catch up to -current.
 1.12.2.1  22-Oct-2001  nathanw Catch up to -current.
 1.14.10.1  15-Jul-2002  gehenna catch up with -current.
 1.17.6.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.17.6.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.17.6.3  18-Sep-2004  skrll Sync with HEAD.
 1.17.6.2  12-Aug-2004  skrll Sync with HEAD.
 1.17.6.1  03-Aug-2004  skrll Sync with HEAD
 1.19.10.1  07-Jun-2005  tron Pull up revision 1.20 (requested by martin in ticket #374):
If the driver supports reverse, try that first - even on color displays.
This removes a XXX and makes us independent of the users default colors.
 1.22.2.1  30-Dec-2006  yamt sync with head.
 1.23.8.1  03-Sep-2006  yamt sync with head.
 1.23.4.1  09-Sep-2006  rpaulo sync with head
 1.24.4.2  10-Dec-2006  yamt sync with head.
 1.24.4.1  22-Oct-2006  yamt sync with head
 1.24.2.1  18-Nov-2006  ad Sync with head.
 1.26.72.1  21-Apr-2010  matt sync to netbsd-5
 1.26.64.1  17-Mar-2010  snj Pull up following revision(s) (requested by jdc in ticket #1340):
sys/dev/wscons/wsemul_sun.c: revision 1.28
Add mappings for KS_End/KS_KP_End, so that the `End' key actually does
something.
 1.26.52.2  11-Aug-2010  yamt sync with head.
 1.26.52.1  11-Mar-2010  yamt sync with head
 1.27.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.28.38.2  28-Aug-2017  skrll Sync with HEAD
 1.28.38.1  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.28.20.1  03-Dec-2017  jdolecek update from HEAD
 1.32.4.1  10-Jun-2019  christos Sync with HEAD
 1.32.2.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)

RSS XML Feed