Ioctl Requests vt(7I)
NAME
vt - Solaris virtual console interface
SYNOPSIS
#include
#include
DESCRIPTION
The virtual console device driver - also known as virtual
terminal (VT) - is a layer of management functions that pro-
vides facilities to support and switch between multiple
screen faces on a single physical device.
VT's are accessed in the same way as other devices. The
open(2) system call is used to open the virtual console and
read(2), write(2) and ioctl(2) are used in the normal way
and support the functionality of the underlying device. In
addition, some virtual console-specific ioctls are provided
and described below.
The VT provides a link between different screen faces and
the device. The active virtual console corresponds to the
currently visible screen face. Device input is directed to
the active console and any device-specific modes that change
on a per virtual terminal basis are set to the characteris-
tics associated with the active console.
You manage VT's by intercepting keyboard sequences ("hot
key"). To maintain consistency with Xserver, the virtual
console device driver supports the Ctrl, Alt, F# and arrow
keys.
The sequence AltL ] F# (where AltL represents the Alt key
and F# represents function keys 1 through 12) is used to
select virtual console 1-12. The sequence AltGraph ] F#
(where AltGraph represents the right Alt key and F#
represent function keys 1 through 12) is for virtual console
13-24. Alt ] F1 chooses the system console (also known as
virtual console 1). The sequence Alt ] -> (where ">"
represents the right directional arrow) selects the next VT
in a circular ring fashion and Alt ] <- ( where "<"
represents the left directional arrow) changes to the previ-
ous console in a circular fashion. The sequence Alt ] ^
(where "^" represents the up directional arrow) is for the
last used console.
SunOS 5.11 Last change: 22 Sep 2008 1
Ioctl Requests vt(7I)
Virtual console switching can be done automatically
(VTAUTO) on receipt of a ``hot-key'' or by the process own-
ing the VT (VTPROCES). When performed automatically, the
process associated with the virtual console is unaware of
the switch. Saving and restoring the device are handled by
the underlying device driver and the virtual console
manager. Note that automatic switching is the default mode.
When a ``hot-key'' is sent when in process-controlled switch
mode, the process owning the VT is sent a signal (relsig) it
has specified to the virtual console manager (see
signal(3C)) requesting the process to release the physical
device. At this point, the virtual console manager awaits
the VTRELDISP ioctl from the process. If the process
refuses to release the device (meaning the switch does not
occur), it performs a VTRELDISP ioctl with an argument of 0
(zero). If the process desires to release the device, it
saves the device state (keyboard, display, and I/O regis-
ters) and then performs a VTRELDISP with an argument of 1
to complete the switch.
A ring of VT's can contain intermixed auto mode and process
control mode consoles. When an auto mode process becomes
active, the underlying device driver and the virtual console
manager handle the restoring of the device. Process control
mode processes are sent a specified signal (acqsig) when
they become the active console. The process then restores
the device state (keyboard, display, and I/O registers) and
performs VTRELDISP ioctl with an argument of VTACKACQ to
complete the switching protocol.
The modify-operations ioctls (VTSETMODE, VTRELDISP,
VTWAITACTIVE, KDSETMODE) check if the VT is the controlling
tty of the calling process. If not, the sysdevices
privilege is enforced. VTACTIVATE requires the sysdevices
privilege. Note that there is no controlling tty and
privilege check for query/view operations.
IOCTLS
The following ioctls apply to devices that support virtual
consoles:
VTENABLED
Queries to determine if VT functionality is available on
the system. The argument is a pointer to an integer. If
VT functionality is available, the integer is 1, other-
wise it is 0.
SunOS 5.11 Last change: 22 Sep 2008 2
Ioctl Requests vt(7I)
VTOPENQRY
Finds an available VT. The argument is a pointer to an
integer. The integer is filled in with the number of the
first available console that no other process has open
(and hence, is available to be opened). If there are no
available VT's, -1 is filled in.
VTGETMODE
Determines the VT's current mode, either VTAUTO or
VTPROCES. The argument is the address of the following
structure, as defined in
struct vtmode {
char mode; /* VT mode */
char waitv; /* not used */
short relsig;/* signal to use for release request */
short acqsig;/* signal to use for display acquired */
short frsig;/* not used */
}
/* Virtual console Modes */
#define VTAUTO 0 /* automatic VT switching */
#define VTPROCES 1 /* process controls switching */
The structure will be filled in with the current value
for each field.
VTSETMODE
Sets the VT mode. The argument is a pointer to a vtmode
structure as defined above. The structure should be
filled in with the desired mode. If process-control
mode is specified, the signals used to communicate with
the process should be specified. If any signals are not
specified (value is zero), the signal default is SIGUSR1
(for relsig and acqsig).
VTRELDISP
Tells the VT manager if the process releases (or
refuses to release) the display. An argument of 1 indi-
cates the VT is released. An argument of 0 indicates
refusal to release. The VTACKACQ argument indicates if
acquisition of the VT has been completed.
SunOS 5.11 Last change: 22 Sep 2008 3
Ioctl Requests vt(7I)
VTACTIVATE
Makes the VT specified in the argument the active VT (in
the same manner as if a hotkey initiated the switch).
If the specified VT is not open or does not exist, the
call fails and errno is set to ENXIO.
VTWAITACTIVE
If the specified VT is currently active, this call
returns immediately. Otherwise, it sleeps until the
specified VT becomes active, at which point it returns.
VTGETSTATE
Obtains the active VT number and a list of open VTs. The
argument is an address to the following structure:
struct vtstat {
unsigned short vactive, /* number of the active VT */
vsignal, /* not used */
vstate; /* count of open VTs. For every 1 in this
field, there is an open VT */
}
With VTGETSTATE, the VT manager first gets the number
of the active VT, then determines the number of open VTs
in the system and sets a 1 for each open VT in vstate.
Next, the VT manager transfers the information in struc-
ture vtstat passed by the user process.
KDGETMODE
Obtains the text/graphics mode associated with the VT.
#define KDTEXT 0
#define KDGRAPHICS 1
KDSETMODE
Sets the text/graphics mode to the VT.
KDTEXT indicates that console text is displayed on the
screen. Normally KDTEXT is combined with VTAUTO mode
for text console terminals, so that the console text
display automatically is saved and restored on the hot
key screen switches.
SunOS 5.11 Last change: 22 Sep 2008 4
Ioctl Requests vt(7I)
KDGRAPHICS indicates that the user/application (usually
Xserver) has direct control of the display for this VT
in graphics mode. Normally KDGRAPHICS is combined with
VTPROCES mode for this VT indicating direct control of
the display in graphics mode. In this mode, all writes
to the VT using the write system call are ignored, and
you must save and restore the display on the hot key
screen switches.
When the mode of the active VT is changed from KDTEXT
to KDGRAPHICS or a VT of KDGRAPHICS mode is made
active from a previous active VT of KDTEXT mode, the
virtual console manager initiates a KDSETMODE ioctl with
KDGRAPHICS as the argument to the underlying console
frame buffer device indicating that current display is
running into graphics mode.
When the mode of the active VT is changed from
KDGRAPHICS to KDTEXT or a VT of KDTEXT mode is
actived from a previous active VT of KDGRAPHICS mode,
the virtual console manager initiates a KDSETMODE ioctl
with KDTEXT as the argument to the underlying console
frame buffer device indicating that current display is
running into console text mode.
FILES
/dev/vt/# VT devices.
SEE ALSO
ioctl(2), signal(3C), wscons(7D)
NOTES
By default, there are only five virtual console instance
login prompts running on /dev/vt/# (where "#" represents 2
to 6) in addition to the system console running on
/dev/console. Normally Xorg uses the seventh virtual console
(/dev/vt/7.) To switch from consoles to Xserver (which nor-
mally picks up the first available virtual console), use [
Ctrl ] ] Alt ] F7 .
# svcs grep login
online 17:49:11 svc:/system/console-login:default
online 17:49:11 svc:/system/console-login:vt2
online 17:49:11 svc:/system/console-login:vt3
online 17:49:11 svc:/system/console-login:vt4
online 17:49:11 svc:/system/console-login:vt5
online 17:49:11 svc:/system/console-login:vt6
console-login:default is for the system console, others for
virtual consoles.
SunOS 5.11 Last change: 22 Sep 2008 5
Ioctl Requests vt(7I)
You can modify properties/disable/enable and remove/add
virtual consoles using smf(5):
# svccfg -s console-login add vt8
# svccfg -s console-login:vt8 setprop ttymon/device=astring: "/dev/vt/8"
# svcadm enable console-login:vt8
SunOS 5.11 Last change: 22 Sep 2008 6
|