---
name: "VT_SETMODE"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ioctl_vt"
---

# VT\_SETMODE(2const)

ioctls for console terminal and virtual consoles

Part of [ioctl\_vt(2)](/ioctl_vt/2.md).

## NAME

ioctl\_vt - ioctls for console terminal and virtual consoles

## SYNOPSIS

```
#include <linux/vt.h>  /* Definition of VT_* constants */
#include <sys/ioctl.h>
```

**int ioctl(int** *fd***, unsigned long** *op***, void \****argp***);**

## DESCRIPTION

The following Linux-specific [**ioctl**(2)](/ioctl/2.md) operations are supported for console terminals and virtual consoles.

- **VT\_OPENQRY**

  Returns the first available (non-opened) console. *argp* points to an *int* which is set to the number of the vt (1 \<= *\*argp* \<= MAX\_NR\_CONSOLES).

- **VT\_GETMODE**

  Get mode of active vt. *argp* points to a

-

  ```
  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) */
  };
  ```

-

  which is set to the mode of the active vt. *mode* is set to one of these values:

  | | |
  | --- | --- |
  | VT\_AUTO | auto vt switching |
  | VT\_PROCESS | process controls switching |
  | VT\_ACKACQ | acknowledge switch |

- **VT\_SETMODE**

  Set mode of active vt. *argp* points to a *struct vt\_mode*.

- **VT\_GETSTATE**

  Get global vt state info. *argp* points to a

-

  ```
  struct vt_stat {
      unsigned short v_active;  /* active vt */
      unsigned short v_signal;  /* signal to send */
      unsigned short v_state;   /* vt bit mask */
  };
  ```

-

  For each vt in use, the corresponding bit in the *v\_state* member is set. (Linux 1.0 through Linux 1.1.92.)

- **VT\_RELDISP**

  Release a display.

- **VT\_ACTIVATE**

  Switch to vt *argp* (1 \<= *argp* \<= MAX\_NR\_CONSOLES).

- **VT\_WAITACTIVE**

  Wait until vt *argp* has been activated.

- **VT\_DISALLOCATE**

  Deallocate the memory associated with vt *argp*. (Since Linux 1.1.54.)

- **VT\_RESIZE**

  Set the kernel's idea of screensize. *argp* points to a

-

  ```
  struct vt_sizes {
      unsigned short v_rows;       /* # rows */
      unsigned short v_cols;       /* # columns */
      unsigned short v_scrollsize; /* no longer used */
  };
  ```

-

  Note that this does not change the videomode. See [**resizecons**(8)](/resizecons/8.md). (Since Linux 1.1.54.)

- **VT\_RESIZEX**

  Set the kernel's idea of various screen parameters. *argp* points to a

-

  ```
  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 */
  };
  ```

-

  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 [**resizecons**(8)](/resizecons/8.md). (Since Linux 1.3.3.)

- **VT\_GETCONSIZECSRPOS**

  Get console size and cursor position. *argp* points to a

-

  ```
  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 */
  };
  ```

-

  (Since Linux 6.16.)

## RETURN VALUE

On success, 0 is returned (except where indicated). On failure, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

- **EINVAL**

  *argp* is invalid.

## STANDARDS

Linux.

## SEE ALSO

[**ioctl**(2)](/ioctl/2.md), [**ioctl\_console**(2)](/ioctl_console/2.md)
