mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
![Samuel Thibault](/assets/img/avatar_default.png)
When reading /dev/vcsa while a font with more than 256 characters is loaded, one of the attribute bits records the 9th bit of the character. But depending on the console driver (vgacon or fbcon for instance), that's bit 3 or bit 0. And there is no way for userland to know that, thus no way for userland to safely grab the screen content. So here is a (tested) patch: Add a VT_GETHIFONTMASK ioctl for knowing which bit is the 9th bit for VC text (vc_hi_font_mask field of the vc_data structure). Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
65 lines
2.4 KiB
C
65 lines
2.4 KiB
C
#ifndef _LINUX_VT_H
|
|
#define _LINUX_VT_H
|
|
|
|
/*
|
|
* These constants are also useful for user-level apps (e.g., VC
|
|
* resizing).
|
|
*/
|
|
#define MIN_NR_CONSOLES 1 /* must be at least 1 */
|
|
#define MAX_NR_CONSOLES 63 /* serial lines start at 64 */
|
|
#define MAX_NR_USER_CONSOLES 63 /* must be root to allocate above this */
|
|
/* Note: the ioctl VT_GETSTATE does not work for
|
|
consoles 16 and higher (since it returns a short) */
|
|
|
|
/* 0x56 is 'V', to avoid collision with termios and kd */
|
|
|
|
#define VT_OPENQRY 0x5600 /* find available vt */
|
|
|
|
struct vt_mode {
|
|
char mode; /* vt mode */
|
|
char waitv; /* if set, hang on writes if not active */
|
|
short relsig; /* signal to raise on release req */
|
|
short acqsig; /* signal to raise on acquisition */
|
|
short frsig; /* unused (set to 0) */
|
|
};
|
|
#define VT_GETMODE 0x5601 /* get mode of active vt */
|
|
#define VT_SETMODE 0x5602 /* set mode of active vt */
|
|
#define VT_AUTO 0x00 /* auto vt switching */
|
|
#define VT_PROCESS 0x01 /* process controls switching */
|
|
#define VT_ACKACQ 0x02 /* acknowledge switch */
|
|
|
|
struct vt_stat {
|
|
unsigned short v_active; /* active vt */
|
|
unsigned short v_signal; /* signal to send */
|
|
unsigned short v_state; /* vt bitmask */
|
|
};
|
|
#define VT_GETSTATE 0x5603 /* get global vt state info */
|
|
#define VT_SENDSIG 0x5604 /* signal to send to bitmask of vts */
|
|
|
|
#define VT_RELDISP 0x5605 /* release display */
|
|
|
|
#define VT_ACTIVATE 0x5606 /* make vt active */
|
|
#define VT_WAITACTIVE 0x5607 /* wait for vt active */
|
|
#define VT_DISALLOCATE 0x5608 /* free memory associated to vt */
|
|
|
|
struct vt_sizes {
|
|
unsigned short v_rows; /* number of rows */
|
|
unsigned short v_cols; /* number of columns */
|
|
unsigned short v_scrollsize; /* number of lines of scrollback */
|
|
};
|
|
#define VT_RESIZE 0x5609 /* set kernel's idea of screensize */
|
|
|
|
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 */
|
|
};
|
|
#define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */
|
|
#define VT_LOCKSWITCH 0x560B /* disallow vt switching */
|
|
#define VT_UNLOCKSWITCH 0x560C /* allow vt switching */
|
|
#define VT_GETHIFONTMASK 0x560D /* return hi font mask */
|
|
|
|
#endif /* _LINUX_VT_H */
|