'\" t .\" Copyright 1995, James R. Van Zandt .\" Copyright 1995, Andries E. Brouwer .\" Copyright 1995, Rickard E. Faith .\" Copyright 1995, H. Peter Anvin .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" FIXME The following are not documented: .\" VT_LOCKSWITCH (since Linux 1.3.47, needs CAP_SYS_TTY_CONFIG) .\" VT_UNLOCKSWITCH (since Linux 1.3.47, needs CAP_SYS_TTY_CONFIG) .\" VT_GETHIFONTMASK (since Linux 2.6.18) .\" .TH ioctl_vt 2 2026-02-08 "Linux man-pages 6.19" .SH NAME ioctl_vt \- ioctls for console terminal and virtual consoles .SH SYNOPSIS .nf .BR "#include " " /* Definition of " VT_* " constants */" .B #include .P .BI "int ioctl(int " fd ", unsigned long " op ", void *" argp ); .fi .SH DESCRIPTION The following Linux-specific .BR ioctl (2) operations are supported for console terminals and virtual consoles. .TP .B VT_OPENQRY Returns the first available (non-opened) console. .I argp points to an .I int which is set to the number of the vt (1 <= .I *argp <= MAX_NR_CONSOLES). .TP .B VT_GETMODE Get mode of active vt. .I argp points to a .IP .in +4n .EX struct vt_mode { char mode; /* vt mode */ char waitv; /* if set, hang on writes if not active */ short relsig; /* signal to raise on release op */ short acqsig; /* signal to raise on acquisition */ short frsig; /* unused (set to 0) */ }; .EE .in .IP which is set to the mode of the active vt. .I mode is set to one of these values: .TS l l. VT_AUTO auto vt switching VT_PROCESS process controls switching VT_ACKACQ acknowledge switch .TE .TP .B VT_SETMODE Set mode of active vt. .I argp points to a .IR "struct vt_mode" . .TP .B VT_GETSTATE Get global vt state info. .I argp points to a .IP .in +4n .EX struct vt_stat { unsigned short v_active; /* active vt */ unsigned short v_signal; /* signal to send */ unsigned short v_state; /* vt bit mask */ }; .EE .in .IP For each vt in use, the corresponding bit in the .I v_state member is set. (Linux 1.0 through Linux 1.1.92.) .TP .B VT_RELDISP Release a display. .TP .B VT_ACTIVATE Switch to vt .I argp (1 <= .I argp <= MAX_NR_CONSOLES). .TP .B VT_WAITACTIVE Wait until vt .I argp has been activated. .TP .B VT_DISALLOCATE Deallocate the memory associated with vt .IR argp . (Since Linux 1.1.54.) .TP .B VT_RESIZE Set the kernel's idea of screensize. .I argp points to a .IP .in +4n .EX struct vt_sizes { unsigned short v_rows; /* # rows */ unsigned short v_cols; /* # columns */ unsigned short v_scrollsize; /* no longer used */ }; .EE .in .IP Note that this does not change the videomode. See .BR resizecons (8). (Since Linux 1.1.54.) .TP .B VT_RESIZEX Set the kernel's idea of various screen parameters. .I argp points to a .IP .in +4n .EX struct vt_consize { unsigned short v_rows; /* number of rows */ unsigned short v_cols; /* number of columns */ unsigned short v_vlin; /* number of pixel rows on screen */ unsigned short v_clin; /* number of pixel rows per character */ unsigned short v_vcol; /* number of pixel columns on screen */ unsigned short v_ccol; /* number of pixel columns per character */ }; .EE .in .IP Any parameter may be set to zero, indicating "no change", but if multiple parameters are set, they must be self-consistent. Note that this does not change the videomode. See .BR resizecons (8). (Since Linux 1.3.3.) .TP .B VT_GETCONSIZECSRPOS Get console size and cursor position. .I argp points to a .IP .in +4n .EX struct vt_consizecsrpos { __u16 con_rows; /* number of console rows */ __u16 con_cols; /* number of console columns */ __u16 csr_row; /* current cursor's row */ __u16 csr_col; /* current cursor's column */ }; .EE .in .IP (Since Linux 6.16.) .SH RETURN VALUE On success, 0 is returned (except where indicated). On failure, \-1 is returned, and .I errno is set to indicate the error. .SH ERRORS .TP .B EINVAL .I argp is invalid. .SH STANDARDS Linux. .SH SEE ALSO .BR ioctl (2), .BR ioctl_console (2)