1*05859157Swiz.\" $NetBSD: wsdisplay.9,v 1.23 2010/12/02 12:54:13 wiz Exp $ 23609682aSgmcgarry.\" 3a8f1cb84Sjmmv.\" Copyright (c) 2001, 2004 The NetBSD Foundation, Inc. 43609682aSgmcgarry.\" All rights reserved. 53609682aSgmcgarry.\" 63609682aSgmcgarry.\" This code is derived from software contributed to The NetBSD Foundation 73609682aSgmcgarry.\" by Gregory McGarry. 83609682aSgmcgarry.\" 93609682aSgmcgarry.\" Redistribution and use in source and binary forms, with or without 103609682aSgmcgarry.\" modification, are permitted provided that the following conditions 113609682aSgmcgarry.\" are met: 123609682aSgmcgarry.\" 1. Redistributions of source code must retain the above copyright 133609682aSgmcgarry.\" notice, this list of conditions and the following disclaimer. 143609682aSgmcgarry.\" 2. Redistributions in binary form must reproduce the above copyright 153609682aSgmcgarry.\" notice, this list of conditions and the following disclaimer in the 163609682aSgmcgarry.\" documentation and/or other materials provided with the distribution. 173609682aSgmcgarry.\" 183609682aSgmcgarry.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 193609682aSgmcgarry.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 203609682aSgmcgarry.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 213609682aSgmcgarry.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 223609682aSgmcgarry.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 233609682aSgmcgarry.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 243609682aSgmcgarry.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 253609682aSgmcgarry.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 263609682aSgmcgarry.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 273609682aSgmcgarry.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 283609682aSgmcgarry.\" POSSIBILITY OF SUCH DAMAGE. 293609682aSgmcgarry.\" 30766ab885Sjmmv.Dd April 15, 2006 313609682aSgmcgarry.Dt WSDISPLAY 9 323609682aSgmcgarry.Os 333609682aSgmcgarry.Sh NAME 343609682aSgmcgarry.Nm wsdisplay , 353609682aSgmcgarry.Nm wsdisplay_switchtoconsole , 363609682aSgmcgarry.Nm wsdisplay_cnattach , 373609682aSgmcgarry.Nm wsdisplaydevprint , 383609682aSgmcgarry.Nm wsemuldisplaydevprint 393609682aSgmcgarry.Nd wscons display support 403609682aSgmcgarry.Sh SYNOPSIS 41472351e1Swiz.In dev/wscons/wsconsio.h 42472351e1Swiz.In dev/wscons/wsdisplayvar.h 43472351e1Swiz.In dev/wscons/wsemulvar.h 44472351e1Swiz.In dev/wscons/wsemul_vt100var.h 453609682aSgmcgarry.Ft void 463609682aSgmcgarry.Fn wsdisplay_switchtoconsole "" 473609682aSgmcgarry.Ft void 483609682aSgmcgarry.Fn wsdisplay_cnattach "const struct wsscreen_descr *type" "void *cookie" \ 493609682aSgmcgarry"int ccol" "int crow" "long defattr" 503609682aSgmcgarry.Ft void 513609682aSgmcgarry.Fn wsemul_xxx_cnattach "const struct wsscreen_descr *type" "void *cookie" \ 523609682aSgmcgarry"int ccol" "int crow" "long defattr" 533609682aSgmcgarry.Ft int 543609682aSgmcgarry.Fn wsdisplaydevprint "void *aux" "const char *pnp" 553609682aSgmcgarry.Ft int 563609682aSgmcgarry.Fn wsemuldisplaydevprint "void * aux" "const char *pnp" 573609682aSgmcgarry.Sh DESCRIPTION 583609682aSgmcgarryThe 593609682aSgmcgarry.Nm 603609682aSgmcgarrymodule is a component of the 613609682aSgmcgarry.Xr wscons 9 62770eef21Swizframework to provide machine-independent display support. 63770eef21SwizMost of the support is provided by the 643609682aSgmcgarry.Xr wsdisplay 4 653609682aSgmcgarrydevice driver, which must be a child of the hardware device driver. 663609682aSgmcgarry.Pp 673609682aSgmcgarryThe wscons display interface is complicated by the fact that there are 68770eef21Swiztwo different interfaces. 69770eef21SwizThe first interface corresponds to the simple bit-mapped display which 70770eef21Swizdoesn't provide terminal-emulation and console facilities. 71770eef21SwizThe second interface provides machine-independent terminal emulation 72770eef21Swizfor displays that can support glass-tty terminal emulations. 73770eef21SwizThese are character-oriented displays, with row and column numbers 74770eef21Swizstarting at zero in the upper left hand corner of the screen. 75770eef21SwizDisplay drivers which cannot emulate terminals use the first interface. 76770eef21SwizIn most cases, the low-level hardware driver can use the 773609682aSgmcgarry.Xr rasops 9 783609682aSgmcgarryinterface to provide enough support to allow glass-tty terminal 79770eef21Swizemulation. 80770eef21SwizIf the display is not the console, terminal emulation does not make 81770eef21Swizsense and the display operates using the bit-mapped interface. 823609682aSgmcgarry.Pp 83770eef21SwizThe wscons framework allows concurrent displays to be active. 84770eef21SwizIt also provides support for multiple screens for each display and 85770eef21Swiztherefore allows a virtual terminal on each screen. 86770eef21SwizMultiple terminal emulations and fonts can be active at the same 87770eef21Swiztime allowing different emulations and fonts for each screen. 883609682aSgmcgarry.Pp 893609682aSgmcgarryFont manipulation facilities for the terminal emulation interface are 903609682aSgmcgarryavailable through the 913609682aSgmcgarry.Xr wsfont 9 923609682aSgmcgarrymodule. 933609682aSgmcgarry.Sh DATA TYPES 943609682aSgmcgarryDisplay drivers providing support for wscons displays will make use 953609682aSgmcgarryof the following data types: 963609682aSgmcgarry.Bl -tag -width compact 973609682aSgmcgarry.It Fa struct wsdisplay_accessops 983609682aSgmcgarryA structure used to specify the display access functions invoked by 99770eef21Swizuserland program which require direct device access, such as X11. 100770eef21SwizAll displays must provide this structure and pass it to the 1013609682aSgmcgarry.Xr wsdisplay 4 102770eef21Swizchild device. 103770eef21SwizIt has the following members: 1043609682aSgmcgarry.Bd -literal 10538d8c6bfSjmmv int (*ioctl)(void *v, void *vs, u_long cmd, 106c1a14b53Sdogcow void *data, int flag, struct lwp *l); 10738d8c6bfSjmmv paddr_t (*mmap)(void *v, void *vs, off_t off, int prot); 1083609682aSgmcgarry int (*alloc_screen)(void *, 1093609682aSgmcgarry const struct wsscreen_descr *, void **, 1103609682aSgmcgarry int *, int *, long *); 1113609682aSgmcgarry void (*free_screen)(void *, void *); 1123609682aSgmcgarry int (*show_screen)(void *, void *, int, 1133609682aSgmcgarry void (*)(), void *); 1143609682aSgmcgarry int (*load_font)(void *, void *, 1153609682aSgmcgarry struct wsdisplay_font *); 1163609682aSgmcgarry void (*pollc)(void *, int); 11783d61f40Swiz void (*scroll)(void *, void *, int); 1183609682aSgmcgarry.Ed 1193609682aSgmcgarry.Pp 1203609682aSgmcgarryThe 1213609682aSgmcgarry.Fa ioctl 1223609682aSgmcgarrymember defines the function to be called to perform display-specific 123770eef21Swizioctl calls. 124770eef21SwizThe 1253609682aSgmcgarry.Fa mmap 1263609682aSgmcgarrymember defines the function for mapping a part of the display device 127770eef21Swizinto user address space. 128770eef21SwizThe 1293609682aSgmcgarry.Fa alloc_screen 1303609682aSgmcgarrymember defines a function for allocating a new screen which can be 131770eef21Swizused as a virtual terminal. 132770eef21SwizThe 1333609682aSgmcgarry.Fa free_screen 134770eef21Swizmember defines a function for de-allocating a screen. 135770eef21SwizThe 1363609682aSgmcgarry.Fa show_screen 1373609682aSgmcgarrymember defines a function for mapping a screen onto the physical 138770eef21Swizdisplay. 1391a30d8a5SsnjThis function is used for switching between screens. 140770eef21SwizThe 1413609682aSgmcgarry.Fa load_font 1423609682aSgmcgarrymember defines a function for loading a new font into the display. 1433609682aSgmcgarryThe 1443609682aSgmcgarry.Fa pollc 1453609682aSgmcgarrymember defines a function for polling the console. 146a8f1cb84SjmmvThe 147a8f1cb84Sjmmv.Fa scroll 148a8f1cb84Sjmmvmember defines a function for scrolling the contents of the display. 1493609682aSgmcgarry.Pp 1503609682aSgmcgarryThere is a 1513609682aSgmcgarry.Fa void * 1523609682aSgmcgarrycookie provided by the display driver associated with these 1533609682aSgmcgarryfunctions, which is passed to them when they are invoked. 15438d8c6bfSjmmv.Pp 15538d8c6bfSjmmvThe 15638d8c6bfSjmmv.Fa void *vs 15738d8c6bfSjmmvcookie, passed to 15838d8c6bfSjmmv.Fn ioctl 15938d8c6bfSjmmvand 16038d8c6bfSjmmv.Fn mmap , 16138d8c6bfSjmmvpoints to the virtual screen on which these operations were executed. 1623609682aSgmcgarry.It Fa struct wsdisplaydev_attach_args 1633609682aSgmcgarryA structure used to attach the 1643609682aSgmcgarry.Xr wsdisplay 4 165770eef21Swizchild device for the simple bit-mapped interface. 166770eef21SwizIt has the following members: 1673609682aSgmcgarry.Bd -literal 1683609682aSgmcgarry const struct wsdisplay_accessops *accessops; 1693609682aSgmcgarry void *accesscookie; 1703609682aSgmcgarry.Ed 1711a30d8a5SsnjIf the full terminal-emulation interface is to be used, then 1721a30d8a5Ssnj.Em struct wsemuldisplaydev_attach_args 1731a30d8a5Ssnjshould be used instead. 1743609682aSgmcgarry.It Fa struct wsemuldisplaydev_attach_args 1753609682aSgmcgarryA structure used to attach the 1763609682aSgmcgarry.Xr wsdisplay 4 177770eef21Swizchild device for the full terminal emulation interface. 178770eef21SwizIt has the following members: 1793609682aSgmcgarry.Bd -literal 1803609682aSgmcgarry int console; 1813609682aSgmcgarry const struct wsscreen_list *scrdata; 1823609682aSgmcgarry const struct wsdisplay_accessops *accessops; 1833609682aSgmcgarry void *accesscookie; 1843609682aSgmcgarry.Ed 1851a30d8a5SsnjIf the simple bit-mapped interface is to be used, then 1861a30d8a5Ssnj.Em struct wsdisplaydev_attach_args 1871a30d8a5Ssnjshould be used instead. 1883609682aSgmcgarry.It Fa struct wsdisplay_emulops 189770eef21SwizA structure used to specify the display emulation functions. 190770eef21SwizAll displays intending to provide terminal emulation must provide 1913609682aSgmcgarrythis structure and pass it to the 1923609682aSgmcgarry.Xr wsdisplay 4 193770eef21Swizchild device. 194770eef21SwizIt has the following members: 1953609682aSgmcgarry.Bd -literal 1963609682aSgmcgarry void (*cursor)(void *c, int on, int row, int col); 1973609682aSgmcgarry int (*mapchar)(void *, int, unsigned int *); 1983609682aSgmcgarry void (*putchar)(void *c, int row, int col, 1993609682aSgmcgarry u_int uc, long attr); 2003609682aSgmcgarry void (*copycols)(void *c, int row, int srccol, 2013609682aSgmcgarry int dstcol, int ncols); 2023609682aSgmcgarry void (*erasecols)(void *c, int row, int startcol, 2033609682aSgmcgarry int ncols, long); 2043609682aSgmcgarry void (*copyrows)(void *c, int srcrow, int dstrow, 2053609682aSgmcgarry int nrows); 2063609682aSgmcgarry void (*eraserows)(void *c, int row, int nrows, long); 20772b72236Sjunyoung int (*allocattr)(void *c, int fg, int bg, int flags, 2083609682aSgmcgarry long *); 209a8f1cb84Sjmmv void (*replaceattr)(void *c, long oldattr, 210a8f1cb84Sjmmv long newattr); 2113609682aSgmcgarry.Ed 2123609682aSgmcgarry.Pp 213a8f1cb84SjmmvThe 214a8f1cb84Sjmmv.Fa cursor 215a8f1cb84Sjmmvmember defines a function for painting (or unpainting, depending on the 216a8f1cb84Sjmmv.Va on 217a8f1cb84Sjmmvparameter) the cursor at the specified position. 218a8f1cb84SjmmvThe 219a8f1cb84Sjmmv.Fa mapchar 220a8f1cb84Sjmmvmember defines a function for changing the character mapped at a given 221a8f1cb84Sjmmvposition in the character table. 222a8f1cb84SjmmvThe 223a8f1cb84Sjmmv.Fa putchar 22483d61f40Swizmember defines a function for writing a character on the screen, given 225a8f1cb84Sjmmvits position and attribute. 226a8f1cb84SjmmvThe 227a8f1cb84Sjmmv.Fa copycols 228a8f1cb84Sjmmvmember defines a function for copying a set of columns within the same 229a8f1cb84Sjmmvline. 230a8f1cb84SjmmvThe 231a8f1cb84Sjmmv.Fa erasecols 232a8f1cb84Sjmmvmember defines a function for clearing a set of columns in a line, 233a8f1cb84Sjmmvfilling the space with the given attribute. 234a8f1cb84SjmmvThe 235a8f1cb84Sjmmv.Fa copyrows 236a8f1cb84Sjmmvmember defines a function for copying a set of complete rows. 237a8f1cb84SjmmvThe 238a8f1cb84Sjmmv.Fa eraserows 239a8f1cb84Sjmmvmember defines a function for clearing a set of complete rows, 240a8f1cb84Sjmmvfilling the space with the given attribute. 241a8f1cb84SjmmvThe 242a8f1cb84Sjmmv.Fa allocattr 243a8f1cb84Sjmmvmember defines a function for converting an attribute specification 244a8f1cb84Sjmmvgiven by its foreground color, background color and flags, to the 245a8f1cb84Sjmmvinternal representation used by the underlying graphics driver. 246a8f1cb84SjmmvThe 247a8f1cb84Sjmmv.Fa replaceattr 248a8f1cb84Sjmmvmember defines a function for replacing an attribute by another one 249a8f1cb84Sjmmvacross the whole visible part of the screen; this function is optional. 250a8f1cb84Sjmmv.Pp 2513609682aSgmcgarryThere is a 2523609682aSgmcgarry.Fa void * 2533609682aSgmcgarrycookie provided by the display driver associated with these 2543609682aSgmcgarryfunctions, which is passed to them when they are invoked. 2553609682aSgmcgarry.It Fa struct wsscreen_descr 256e32fc00eSuweA structure passed to wscons by the display driver to describe a 257770eef21Swizscreen. 258770eef21SwizAll displays which can operate as a console must provide this structure 259770eef21Swizand pass it to the 2603609682aSgmcgarry.Xr wsdisplay 4 261770eef21Swizchild device. 262770eef21SwizIt contains the following members: 2633609682aSgmcgarry.Bd -literal 2643609682aSgmcgarry char *name; 2653609682aSgmcgarry int ncols, nrows; 2663609682aSgmcgarry const struct wsdisplay_emulops *textops; 2673609682aSgmcgarry int fontwidth, fontheight; 2683609682aSgmcgarry int capabilities; 2693609682aSgmcgarry.Ed 2703609682aSgmcgarry.Pp 2713609682aSgmcgarryThe 2723609682aSgmcgarry.Em capabilities 273770eef21Swizmember is a set of flags describing the screen capabilities. 274770eef21SwizIt can contain the following flags: 2753609682aSgmcgarry.Pp 2763609682aSgmcgarry.Bl -tag -offset indent -width WSSCREEN_UNDERLINE -compact 2773609682aSgmcgarry.It WSSCREEN_WSCOLORS 2783609682aSgmcgarryminimal color capability 2793609682aSgmcgarry.It WSSCREEN_REVERSE 2803609682aSgmcgarrycan display reversed 2813609682aSgmcgarry.It WSSCREEN_HILIT 2823609682aSgmcgarrycan highlight (however) 2833609682aSgmcgarry.It WSSCREEN_BLINK 2843609682aSgmcgarrycan blink 2853609682aSgmcgarry.It WSSCREEN_UNDERLINE 2863609682aSgmcgarrycan underline 2873609682aSgmcgarry.El 2883609682aSgmcgarry.It Fa struct wsscreen_list 2893609682aSgmcgarryA structure passed to wscons by the display driver to tell about its 290770eef21Swizcapabilities. 291770eef21SwizIt contains the following members: 2923609682aSgmcgarry.Bd -literal 2933609682aSgmcgarry int nscreens; 2943609682aSgmcgarry const struct wsscreen_descr **screens; 2953609682aSgmcgarry.Ed 2963609682aSgmcgarry.It Fa struct wscons_syncops 297e32fc00eSuweA structure passed to wscons by the display driver describing the 2982f9d07f1Swizinterface for external screen switching/process synchronization. 2993609682aSgmcgarryThis structure is optional and only required by displays operating 300770eef21Swizwith terminal emulation and intending to support multiple screens. 301770eef21SwizIt contains the following members: 3023609682aSgmcgarry.Bd -literal 3033609682aSgmcgarry int (*detach)(void *, int, void (*)(), void *); 3043609682aSgmcgarry int (*attach)(void *, int, void (*)(), void *); 3053609682aSgmcgarry int (*check)(void *); 3063609682aSgmcgarry void (*destroy)(void *); 3073609682aSgmcgarry.Ed 3083609682aSgmcgarry.El 3093609682aSgmcgarry.Sh FUNCTIONS 3103609682aSgmcgarry.Bl -tag -width compact 3113609682aSgmcgarry.It Fn wsdisplay_switchtoconsole "" 3123609682aSgmcgarrySwitch the console display to its first screen. 3133609682aSgmcgarry.It Fn wsdisplay_cnattach "type" "cookie" "ccol" "crow" "defattr" 3143609682aSgmcgarryAttach this display as the console input by specifying the number of 3153609682aSgmcgarrycolumns 3163609682aSgmcgarry.Fa ccol 3173609682aSgmcgarryand number of rows 3183609682aSgmcgarry.Fa crows . 3193609682aSgmcgarryThe argument 3203609682aSgmcgarry.Fa defattr 3212f9d07f1Swizspecifies the default attribute (color) for the console. 3223609682aSgmcgarry.It Fn wsemul_xxx_cnattach "type" "cookie" "ccol" "crow" "defattr" 3233609682aSgmcgarryAttach this display as the console with terminal emulation described 3243609682aSgmcgarryby the 3253609682aSgmcgarry.Em xxx 3263609682aSgmcgarryand specifying the number of columns 3273609682aSgmcgarry.Fa ccol 3283609682aSgmcgarryand number of rows 3293609682aSgmcgarry.Fa crows . 3303609682aSgmcgarryThe argument 3313609682aSgmcgarry.Fa defattr 332770eef21Swizspecifies the default attribute (color) for the console. 333770eef21SwizDifferent terminal emulations can be active at the same time on one display. 3343609682aSgmcgarry.It Fn wsdisplaydevprint "aux" "pnp" 3353609682aSgmcgarryThe default wsdisplay printing routine used by 3363609682aSgmcgarry.Fn config_found . 3373609682aSgmcgarry(see 3383609682aSgmcgarry.Xr autoconf 9 ) . 3393609682aSgmcgarry.It Fn wsemuldisplaydevprint "aux" "pnp" 3403609682aSgmcgarryThe default wsemul printing routine used by 3413609682aSgmcgarry.Fn config_found . 3423609682aSgmcgarry(see 3433609682aSgmcgarry.Xr autoconf 9 ) . 3443609682aSgmcgarry.El 3453609682aSgmcgarry.Sh AUTOCONFIGURATION 34643e0efbdSperryDisplay drivers which want to use the wsdisplay module must be a 3473609682aSgmcgarryparent to the 3483609682aSgmcgarry.Xr wsdisplay 4 349770eef21Swizdevice and provide an attachment interface. 350770eef21SwizTo attach the 3513609682aSgmcgarry.Xr wsdisplay 4 3523609682aSgmcgarrydevice, the display driver must allocate and populate a 3533609682aSgmcgarry.Fa wsdisplaydev_attach_args 3543609682aSgmcgarrystructure with the supported operations and callbacks and call 3553609682aSgmcgarry.Fn config_found 3563609682aSgmcgarryto perform the attach (see 3573609682aSgmcgarry.Xr autoconf 9 ) . 3583609682aSgmcgarry.Pp 35943e0efbdSperryDisplay drivers which want to use the wscons terminal emulation 3603609682aSgmcgarrymodule must be a parent to the 3613609682aSgmcgarry.Xr wsdisplay 4 3623609682aSgmcgarrydevice and provide a 3633609682aSgmcgarry.Fa wsemuldisplaydev_attach_args 3643609682aSgmcgarrystructure instead of the standard 365a59447b7Sjunyoung.Fa wsdisplaydev_attach_args 3663609682aSgmcgarryto 3673609682aSgmcgarry.Fn config_found 368770eef21Swizto perform the attach. 369770eef21SwizIf the display is not the console the attachment is the same 370770eef21Swizas wsdisplaydev_attach_args. 3713609682aSgmcgarry.Sh OPERATION 3722f9d07f1SwizIf the display belongs to the system console, it must describe the 3733609682aSgmcgarrydefault screen by invoking 374a59447b7Sjunyoung.Fn wsdisplay_cnattach 3753609682aSgmcgarryat console attach time. 3763609682aSgmcgarry.Pp 3773609682aSgmcgarryAll display manipulation is performed by the wscons interface by using 3783609682aSgmcgarrythe callbacks defined in the 3793609682aSgmcgarry.Em wsdisplay_accessops 380770eef21Swizstructure. 381770eef21SwizThe 3823609682aSgmcgarry.Fn ioctl 3833609682aSgmcgarryfunction is called by the wscons interface to perform display-specific 3843609682aSgmcgarryioctl operations (see 3853609682aSgmcgarry.Xr ioctl 2 ) . 3863609682aSgmcgarryThe argument 3872f6c7b64Sbjh21.Fa cmd 3882f6c7b64Sbjh21to the 3893609682aSgmcgarry.Fn ioctl 3903609682aSgmcgarryfunction specifies the specific command to perform using the data 39127b327f0Suebayasi.Fa data . 39227b327f0SuebayasiValid commands are listed in 3932f6c7b64Sbjh21.Pa sys/dev/wscons/wsconsio.h 3942f6c7b64Sbjh21and documented in 3952f6c7b64Sbjh21.Xr wsdisplay 4 . 3963609682aSgmcgarryOperations for terminal emulation are performed using the callbacks 3973609682aSgmcgarrydefined in the 3983609682aSgmcgarry.Em wsdisplay_emulops 3993609682aSgmcgarrystructure. 4003609682aSgmcgarry.Sh CODE REFERENCES 4013609682aSgmcgarryThe wscons subsystem is implemented within the directory 4023609682aSgmcgarry.Pa sys/dev/wscons . 4033609682aSgmcgarryThe 4043609682aSgmcgarry.Nm 405a59447b7Sjunyoungmodule itself is implemented within the file 4063609682aSgmcgarry.Pa sys/dev/wscons/wsdisplay.c . 4073609682aSgmcgarryThe terminal emulation support 408a59447b7Sjunyoungis implemented within the files 4093609682aSgmcgarry.Pa sys/dev/wscons/wsemul_* . 4103609682aSgmcgarry.Xr ioctl 2 4113609682aSgmcgarryoperations are listed in 4123609682aSgmcgarry.Pa sys/dev/wscons/wsconsio.h . 4133609682aSgmcgarry.Sh SEE ALSO 4143609682aSgmcgarry.Xr ioctl 2 , 4152f6c7b64Sbjh21.Xr wsdisplay 4 , 4163609682aSgmcgarry.Xr autoconf 9 , 4173609682aSgmcgarry.Xr driver 9 , 4183609682aSgmcgarry.Xr intro 9 , 4193609682aSgmcgarry.Xr rasops 9 , 4203609682aSgmcgarry.Xr wsfont 9 , 4213609682aSgmcgarry.Xr wskbd 9 , 4223609682aSgmcgarry.Xr wsmouse 9 423