📄 tty.h
字号:
#ifndef _LINUX_TTY_H#define _LINUX_TTY_H/* * 'tty.h' defines some structures used by tty_io.c and some defines. */#include <linux/termios.h>#include <asm/system.h>#define NR_CONSOLES 8#define NR_LDISCS 16/* * These are set up by the setup-routine at boot-time: */struct screen_info { unsigned char orig_x; unsigned char orig_y; unsigned char unused1[2]; unsigned short orig_video_page; unsigned char orig_video_mode; unsigned char orig_video_cols; unsigned short orig_video_ega_ax; unsigned short orig_video_ega_bx; unsigned short orig_video_ega_cx; unsigned char orig_video_lines;};extern struct screen_info screen_info;#define ORIG_X (screen_info.orig_x)#define ORIG_Y (screen_info.orig_y)#define ORIG_VIDEO_PAGE (screen_info.orig_video_page)#define ORIG_VIDEO_MODE (screen_info.orig_video_mode)#define ORIG_VIDEO_COLS (screen_info.orig_video_cols)#define ORIG_VIDEO_EGA_AX (screen_info.orig_video_ega_ax)#define ORIG_VIDEO_EGA_BX (screen_info.orig_video_ega_bx)#define ORIG_VIDEO_EGA_CX (screen_info.orig_video_ega_cx)#define ORIG_VIDEO_LINES (screen_info.orig_video_lines)#define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */#define VIDEO_TYPE_CGA 0x11 /* CGA Display */#define VIDEO_TYPE_EGAM 0x20 /* EGA/VGA in Monochrome Mode */#define VIDEO_TYPE_EGAC 0x21 /* EGA/VGA in Color Mode *//* * This character is the same as _POSIX_VDISABLE: it cannot be used as * a c_cc[] character, but indicates that a particular special character * isn't in use (eg VINTR ahs no character etc) */#define __DISABLED_CHAR '\0'/* * See comment for the tty_struct structure before changing * TTY_BUF_SIZE. Actually, there should be different sized tty_queue * structures for different purposes. 1024 bytes for the transmit * queue is way overkill. TYT, 9/14/92 */#define TTY_BUF_SIZE 1024 /* Must be a power of 2 */struct tty_queue { unsigned long head; unsigned long tail; struct wait_queue * proc_list; unsigned char buf[TTY_BUF_SIZE];};struct serial_struct { int type; int line; int port; int irq; int flags; int xmit_fifo_size; int custom_divisor; int baud_base; unsigned short close_delay; char reserved_char[2]; int hub6; int reserved[5];};/* * These are the supported serial types. */#define PORT_UNKNOWN 0#define PORT_8250 1#define PORT_16450 2#define PORT_16550 3#define PORT_16550A 4#define PORT_MAX 4/* * Definitions for async_struct (and serial_struct) flags field */#define ASYNC_HUP_NOTIFY 0x0001 /* Notify getty on hangups and closes on the callout port */#define ASYNC_FOURPORT 0x0002 /* Set OU1, OUT2 per AST Fourport settings */#define ASYNC_SAK 0x0004 /* Secure Attention Key (Orange book) */#define ASYNC_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */#define ASYNC_SPD_MASK 0x0030#define ASYNC_SPD_HI 0x0010 /* Use 56000 instead of 38400 bps */#define ASYNC_SPD_VHI 0x0020 /* Use 115200 instead of 38400 bps */#define ASYNC_SPD_CUST 0x0030 /* Use user-specified divisor */#define ASYNC_SKIP_TEST 0x0040 /* Skip UART test during autoconfiguration */#define ASYNC_AUTO_IRQ 0x0080 /* Do automatic IRQ during autoconfiguration */#define ASYNC_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */#define ASYNC_PGRP_LOCKOUT 0x0200 /* Lock out cua opens based on pgrp */#define ASYNC_CALLOUT_NOHUP 0x0400 /* Don't do hangups for cua device */#define ASYNC_FLAGS 0x0FFF /* Possible legal async flags */#define ASYNC_USR_MASK 0x0430 /* Legal flags that non-privileged * users can set or reset *//* Internal flags used only by kernel/chr_drv/serial.c */#define ASYNC_INITIALIZED 0x80000000 /* Serial port was initialized */#define ASYNC_CALLOUT_ACTIVE 0x40000000 /* Call out device is active */#define ASYNC_NORMAL_ACTIVE 0x20000000 /* Normal device is active */#define ASYNC_BOOT_AUTOCONF 0x10000000 /* Autoconfigure port on bootup */#define ASYNC_CLOSING 0x08000000 /* Serial port is closing */#define IS_A_CONSOLE(min) (((min) & 0xC0) == 0x00)#define IS_A_SERIAL(min) (((min) & 0xC0) == 0x40)#define IS_A_PTY(min) ((min) & 0x80)#define IS_A_PTY_MASTER(min) (((min) & 0xC0) == 0x80)#define IS_A_PTY_SLAVE(min) (((min) & 0xC0) == 0xC0)#define PTY_OTHER(min) ((min) ^ 0x40)#define SL_TO_DEV(line) ((line) | 0x40)#define DEV_TO_SL(min) ((min) & 0x3F)#define INC(a) ((a) = ((a)+1) & (TTY_BUF_SIZE-1))#define DEC(a) ((a) = ((a)-1) & (TTY_BUF_SIZE-1))#define EMPTY(a) ((a)->head == (a)->tail)#define LEFT(a) (((a)->tail-(a)->head-1)&(TTY_BUF_SIZE-1))#define LAST(a) ((a)->buf[(TTY_BUF_SIZE-1)&((a)->head-1)])#define FULL(a) (!LEFT(a))#define CHARS(a) (((a)->head-(a)->tail)&(TTY_BUF_SIZE-1))extern void put_tty_queue(unsigned char c, struct tty_queue * queue);extern int get_tty_queue(struct tty_queue * queue);#define INTR_CHAR(tty) ((tty)->termios->c_cc[VINTR])#define QUIT_CHAR(tty) ((tty)->termios->c_cc[VQUIT])#define ERASE_CHAR(tty) ((tty)->termios->c_cc[VERASE])#define KILL_CHAR(tty) ((tty)->termios->c_cc[VKILL])#define EOF_CHAR(tty) ((tty)->termios->c_cc[VEOF])#define TIME_CHAR(tty) ((tty)->termios->c_cc[VTIME])#define MIN_CHAR(tty) ((tty)->termios->c_cc[VMIN])#define SWTC_CHAR(tty) ((tty)->termios->c_cc[VSWTC])#define START_CHAR(tty) ((tty)->termios->c_cc[VSTART])#define STOP_CHAR(tty) ((tty)->termios->c_cc[VSTOP])#define SUSP_CHAR(tty) ((tty)->termios->c_cc[VSUSP])#define EOL_CHAR(tty) ((tty)->termios->c_cc[VEOL])#define REPRINT_CHAR(tty) ((tty)->termios->c_cc[VREPRINT])#define DISCARD_CHAR(tty) ((tty)->termios->c_cc[VDISCARD])#define WERASE_CHAR(tty) ((tty)->termios->c_cc[VWERASE])#define LNEXT_CHAR(tty) ((tty)->termios->c_cc[VLNEXT])#define EOL2_CHAR(tty) ((tty)->termios->c_cc[VEOL2])#define _I_FLAG(tty,f) ((tty)->termios->c_iflag & (f))#define _O_FLAG(tty,f) ((tty)->termios->c_oflag & (f))#define _C_FLAG(tty,f) ((tty)->termios->c_cflag & (f))#define _L_FLAG(tty,f) ((tty)->termios->c_lflag & (f))#define I_IGNBRK(tty) _I_FLAG((tty),IGNBRK)#define I_BRKINT(tty) _I_FLAG((tty),BRKINT)#define I_IGNPAR(tty) _I_FLAG((tty),IGNPAR)#define I_PARMRK(tty) _I_FLAG((tty),PARMRK)#define I_INPCK(tty) _I_FLAG((tty),INPCK)#define I_ISTRIP(tty) _I_FLAG((tty),ISTRIP)#define I_INLCR(tty) _I_FLAG((tty),INLCR)#define I_IGNCR(tty) _I_FLAG((tty),IGNCR)#define I_ICRNL(tty) _I_FLAG((tty),ICRNL)#define I_IUCLC(tty) _I_FLAG((tty),IUCLC)#define I_IXON(tty) _I_FLAG((tty),IXON)#define I_IXANY(tty) _I_FLAG((tty),IXANY)#define I_IXOFF(tty) _I_FLAG((tty),IXOFF)#define I_IMAXBEL(tty) _I_FLAG((tty),IMAXBEL)#define O_OPOST(tty) _O_FLAG((tty),OPOST)#define O_OLCUC(tty) _O_FLAG((tty),OLCUC)#define O_ONLCR(tty) _O_FLAG((tty),ONLCR)#define O_OCRNL(tty) _O_FLAG((tty),OCRNL)#define O_ONOCR(tty) _O_FLAG((tty),ONOCR)#define O_ONLRET(tty) _O_FLAG((tty),ONLRET)#define O_OFILL(tty) _O_FLAG((tty),OFILL)#define O_OFDEL(tty) _O_FLAG((tty),OFDEL)#define O_NLDLY(tty) _O_FLAG((tty),NLDLY)#define O_CRDLY(tty) _O_FLAG((tty),CRDLY)#define O_TABDLY(tty) _O_FLAG((tty),TABDLY)#define O_BSDLY(tty) _O_FLAG((tty),BSDLY)#define O_VTDLY(tty) _O_FLAG((tty),VTDLY)#define O_FFDLY(tty) _O_FLAG((tty),FFDLY)#define C_BAUD(tty) _C_FLAG((tty),CBAUD)#define C_CSIZE(tty) _C_FLAG((tty),CSIZE)#define C_CSTOPB(tty) _C_FLAG((tty),CSTOPB)#define C_CREAD(tty) _C_FLAG((tty),CREAD)#define C_PARENB(tty) _C_FLAG((tty),PARENB)#define C_PARODD(tty) _C_FLAG((tty),PARODD)#define C_HUPCL(tty) _C_FLAG((tty),HUPCL)#define C_CLOCAL(tty) _C_FLAG((tty),CLOCAL)#define C_CIBAUD(tty) _C_FLAG((tty),CIBAUD)#define C_CRTSCTS(tty) _C_FLAG((tty),CRTSCTS)#define L_ISIG(tty) _L_FLAG((tty),ISIG)#define L_ICANON(tty) _L_FLAG((tty),ICANON)#define L_XCASE(tty) _L_FLAG((tty),XCASE)#define L_ECHO(tty) _L_FLAG((tty),ECHO)#define L_ECHOE(tty) _L_FLAG((tty),ECHOE)#define L_ECHOK(tty) _L_FLAG((tty),ECHOK)#define L_ECHONL(tty) _L_FLAG((tty),ECHONL)#define L_NOFLSH(tty) _L_FLAG((tty),NOFLSH)#define L_TOSTOP(tty) _L_FLAG((tty),TOSTOP)#define L_ECHOCTL(tty) _L_FLAG((tty),ECHOCTL)#define L_ECHOPRT(tty) _L_FLAG((tty),ECHOPRT)#define L_ECHOKE(tty) _L_FLAG((tty),ECHOKE)#define L_FLUSHO(tty) _L_FLAG((tty),FLUSHO)#define L_PENDIN(tty) _L_FLAG((tty),PENDIN)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -