130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_LINUX_VT_H
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_LINUX_VT_H
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * These constants are also useful for user-level apps (e.g., VC
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * resizing).
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MIN_NR_CONSOLES 1       /* must be at least 1 */
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MAX_NR_CONSOLES	63	/* serial lines start at 64 */
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MAX_NR_USER_CONSOLES 63	/* must be root to allocate above this */
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		/* Note: the ioctl VT_GETSTATE does not work for
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		   consoles 16 and higher (since it returns a short) */
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 0x56 is 'V', to avoid collision with termios and kd */
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_OPENQRY	0x5600	/* find available vt */
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct vt_mode {
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	char mode;		/* vt mode */
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	char waitv;		/* if set, hang on writes if not active */
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	short relsig;		/* signal to raise on release req */
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	short acqsig;		/* signal to raise on acquisition */
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	short frsig;		/* unused (set to 0) */
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_GETMODE	0x5601	/* get mode of active vt */
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_SETMODE	0x5602	/* set mode of active vt */
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define		VT_AUTO		0x00	/* auto vt switching */
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define		VT_PROCESS	0x01	/* process controls switching */
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define		VT_ACKACQ	0x02	/* acknowledge switch */
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct vt_stat {
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_active;	/* active vt */
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_signal;	/* signal to send */
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_state;		/* vt bitmask */
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_GETSTATE	0x5603	/* get global vt state info */
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_SENDSIG	0x5604	/* signal to send to bitmask of vts */
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_RELDISP	0x5605	/* release display */
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_ACTIVATE	0x5606	/* make vt active */
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_WAITACTIVE	0x5607	/* wait for vt active */
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_DISALLOCATE	0x5608  /* free memory associated to vt */
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct vt_sizes {
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_rows;		/* number of rows */
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_cols;		/* number of columns */
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_scrollsize;	/* number of lines of scrollback */
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_RESIZE	0x5609	/* set kernel's idea of screensize */
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct vt_consize {
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_rows;	/* number of rows */
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_cols;	/* number of columns */
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_vlin;	/* number of pixel rows on screen */
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_clin;	/* number of pixel rows per character */
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_vcol;	/* number of pixel columns on screen */
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned short v_ccol;	/* number of pixel columns per character */
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_RESIZEX      0x560A  /* set kernel's idea of screensize + more */
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_LOCKSWITCH   0x560B  /* disallow vt switching */
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_UNLOCKSWITCH 0x560C  /* allow vt switching */
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_GETHIFONTMASK 0x560D  /* return hi font mask */
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct vt_event {
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int event;
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_EVENT_SWITCH		0x0001	/* Console switch */
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_EVENT_BLANK		0x0002	/* Screen blank */
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_EVENT_UNBLANK	0x0004	/* Screen unblank */
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_EVENT_RESIZE		0x0008	/* Resize display */
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_MAX_EVENT		0x000F
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int oldev;		/* Old console */
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int newev;		/* New console (if changing) */
7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int pad[4];		/* Padding for expansion */
7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_WAITEVENT	0x560E	/* Wait for an event */
7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct vt_setactivate {
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int console;
8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct vt_mode mode;
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VT_SETACTIVATE	0x560F	/* Activate and set the mode of a console */
8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define vt_get_kmsg_redirect() vt_kmsg_redirect(-1)
8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_LINUX_VT_H */
91