亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tty.h

?? 內核是系統的心臟
?? H
?? 第 1 頁 / 共 2 頁
字號:
#define L_IEXTEN(tty)	_L_FLAG((tty),IEXTEN)

/*
 * Where all of the state associated with a tty is kept while the tty
 * is open.  Since the termios state should be kept even if the tty
 * has been closed --- for things like the baud rate, etc --- it is
 * not stored here, but rather a pointer to the real state is stored
 * here.  Possible the winsize structure should have the same
 * treatment, but (1) the default 80x24 is usually right and (2) it's
 * most often used by a windowing system, which will set the correct
 * size each time the window is created or resized anyway.
 * IMPORTANT: since this structure is dynamically allocated, it must
 * be no larger than 4096 bytes.  Changing TTY_BUF_SIZE will change
 * the size of this structure, and it needs to be done with care.
 * 						- TYT, 9/14/92
 */
struct tty_struct {
	struct termios *termios;
	int pgrp;
	int session;
	unsigned char stopped:1, hw_stopped:1, packet:1, lnext:1;
	unsigned char char_error:3;
	unsigned char erasing:1;
	unsigned char ctrl_status;
	short line;
	int disc;
	int flags;
	int count;
	unsigned int column;
	struct winsize winsize;
	int  (*open)(struct tty_struct * tty, struct file * filp);
	void (*close)(struct tty_struct * tty, struct file * filp);
	void (*write)(struct tty_struct * tty);
	int  (*ioctl)(struct tty_struct *tty, struct file * file,
		    unsigned int cmd, unsigned long arg);
	void (*throttle)(struct tty_struct * tty, int status);
	void (*set_termios)(struct tty_struct *tty, struct termios * old);
	void (*stop)(struct tty_struct *tty);
	void (*start)(struct tty_struct *tty);
	void (*hangup)(struct tty_struct *tty);
	struct tty_struct *link;
	unsigned char *write_data_ptr;
	int write_data_cnt;
	void (*write_data_callback)(void * data);
	void * write_data_arg;
	int readq_flags[TTY_BUF_SIZE/32];
	int secondary_flags[TTY_BUF_SIZE/32];
	int canon_data;
	unsigned long canon_head;
	unsigned int canon_column;
	struct tty_queue read_q;
	struct tty_queue write_q;
	struct tty_queue secondary;
	void *disc_data;
};

struct tty_ldisc {
	int	flags;
	/*
	 * The following routines are called from above.
	 */
	int	(*open)(struct tty_struct *);
	void	(*close)(struct tty_struct *);
	int	(*read)(struct tty_struct * tty, struct file * file,
			unsigned char * buf, unsigned int nr);
	int	(*write)(struct tty_struct * tty, struct file * file,
			 unsigned char * buf, unsigned int nr);	
	int	(*ioctl)(struct tty_struct * tty, struct file * file,
			 unsigned int cmd, unsigned long arg);
	int	(*select)(struct tty_struct * tty, struct inode * inode,
			  struct file * file, int sel_type,
			  struct select_table_struct *wait);
	/*
	 * The following routines are called from below.
	 */
	void	(*handler)(struct tty_struct *);
};

#define LDISC_FLAG_DEFINED	0x00000001

/*
 * These are the different types of thottle status which can be sent
 * to the low-level tty driver.  The tty_io.c layer is responsible for
 * notifying the low-level tty driver of the following conditions:
 * secondary queue full, secondary queue available, and read queue
 * available.  The low-level driver must send the read queue full
 * command to itself, if it is interested in that condition.
 *
 * Note that the low-level tty driver may elect to ignore one or both
 * of these conditions; normally, however, it will use ^S/^Q or some
 * sort of hardware flow control to regulate the input to try to avoid
 * overflow.  While the low-level driver is responsible for all
 * receiving flow control, note that the ^S/^Q handling (but not
 * hardware flow control) is handled by the upper layer, in
 * copy_to_cooked.  
 */
#define TTY_THROTTLE_SQ_FULL	1
#define TTY_THROTTLE_SQ_AVAIL	2
#define TTY_THROTTLE_RQ_FULL	3
#define TTY_THROTTLE_RQ_AVAIL	4

/*
 * This defines the low- and high-watermarks for the various conditions.
 * Again, the low-level driver is free to ignore any of these, and has
 * to implement RQ_THREHOLD_LW for itself if it wants it.
 */
#define SQ_THRESHOLD_LW	16
#define SQ_THRESHOLD_HW 768
#define RQ_THRESHOLD_LW 16
#define RQ_THRESHOLD_HW 768

/*
 * These bits are used in the flags field of the tty structure.
 * 
 * So that interrupts won't be able to mess up the queues,
 * copy_to_cooked must be atomic with repect to itself, as must
 * tty->write.  Thus, you must use the inline functions set_bit() and
 * clear_bit() to make things atomic.
 */
#define TTY_WRITE_BUSY 0
#define TTY_READ_BUSY 1
#define TTY_SQ_THROTTLED 2
#define TTY_RQ_THROTTLED 3
#define TTY_IO_ERROR 4
#define TTY_SLAVE_CLOSED 5
#define TTY_EXCLUSIVE 6

/*
 * When a break, frame error, or parity error happens, these codes are
 * stuffed into the read queue, and the relevant bit in readq_flag bit
 * array is set.
 */
#define TTY_BREAK	1
#define TTY_FRAME	2
#define TTY_PARITY	3
#define TTY_OVERRUN	4

#define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))
#define TTY_READ_FLUSH(tty) tty_read_flush((tty))

extern void tty_write_flush(struct tty_struct *);
extern void tty_read_flush(struct tty_struct *);

/* Number of chars that must be available in a write queue before
   the queue is awakened. */
#define WAKEUP_CHARS (3*TTY_BUF_SIZE/4)

extern struct tty_struct *tty_table[];
extern struct termios *tty_termios[];
extern struct termios *termios_locked[];
extern int tty_check_write[];
extern struct tty_struct * redirect;
extern struct tty_ldisc ldiscs[];
extern int fg_console;
extern unsigned long video_num_columns;
extern unsigned long video_num_lines;
extern struct wait_queue * keypress_wait;

#define TTY_TABLE_IDX(nr)	((nr) ? (nr) : (fg_console+1))
#define TTY_TABLE(nr) 		(tty_table[TTY_TABLE_IDX(nr)])

/*	intr=^C		quit=^|		erase=del	kill=^U
	eof=^D		vtime=\0	vmin=\1		sxtc=\0
	start=^Q	stop=^S		susp=^Z		eol=\0
	reprint=^R	discard=^U	werase=^W	lnext=^V
	eol2=\0
*/
#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"

extern long rs_init(long);
extern long lp_init(long);
extern long con_init(long);
extern long tty_init(long);

extern void flush_input(struct tty_struct * tty);
extern void flush_output(struct tty_struct * tty);
extern void wait_until_sent(struct tty_struct * tty, int timeout);
extern int check_change(struct tty_struct * tty, int channel);
extern void stop_tty(struct tty_struct * tty);
extern void start_tty(struct tty_struct * tty);
extern int tty_register_ldisc(int disc, struct tty_ldisc *new_ldisc);
extern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp,
			     int buflen);
extern int tty_write_data(struct tty_struct *tty, char *bufp, int buflen,
			  void (*callback)(void * data), void * callarg);

extern int tty_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
extern int is_orphaned_pgrp(int pgrp);
extern int is_ignored(int sig);
extern int tty_signal(int sig, struct tty_struct *tty);
extern void tty_hangup(struct tty_struct * tty);
extern void tty_vhangup(struct tty_struct * tty);
extern void tty_unhangup(struct file *filp);
extern int tty_hung_up_p(struct file * filp);
extern void do_SAK(struct tty_struct *tty);
extern void disassociate_ctty(int priv);

/* tty write functions */

extern void rs_write(struct tty_struct * tty);
extern void con_write(struct tty_struct * tty);

/* serial.c */

extern int  rs_open(struct tty_struct * tty, struct file * filp);

/* pty.c */

extern int  pty_open(struct tty_struct * tty, struct file * filp);

/* console.c */

extern int con_open(struct tty_struct * tty, struct file * filp);
extern void update_screen(int new_console);
extern void blank_screen(void);
extern void unblank_screen(void);

/* vt.c */

extern int vt_ioctl(struct tty_struct *tty, struct file * file,
		    unsigned int cmd, unsigned long arg);

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区中文字幕| 欧美电影免费观看高清完整版在| 成人av在线影院| 91视频国产观看| 久久亚洲免费视频| 亚洲美女偷拍久久| 日本不卡一二三区黄网| 成人自拍视频在线| 3d动漫精品啪啪1区2区免费 | 91视频com| 亚洲精品写真福利| 狠狠色综合播放一区二区| 99麻豆久久久国产精品免费优播| 日韩丝袜情趣美女图片| 亚洲一本大道在线| 成人理论电影网| 一区二区国产视频| 99久久精品国产导航| 久久毛片高清国产| 精品在线观看视频| 欧美一区二区三区在线观看视频 | 欧美视频三区在线播放| 久久精子c满五个校花| 日韩国产一区二| 欧美色综合网站| 九色|91porny| 日韩理论在线观看| 福利一区二区在线| 欧美激情中文字幕一区二区| 国产在线视频不卡二| 成人欧美一区二区三区1314 | 美女尤物国产一区| 欧美日韩国产首页在线观看| 一区二区三区在线视频观看58| 欧美一区二区大片| 一本到一区二区三区| 欧美韩国日本一区| 3atv在线一区二区三区| 波多野结衣欧美| 久久电影国产免费久久电影| 欧美一区日韩一区| 91免费版在线| 狠狠色丁香婷综合久久| 午夜视频一区二区三区| 欧美电影免费观看高清完整版在线观看 | 2021国产精品久久精品| 欧美日韩一区二区三区免费看| 亚洲一区二区3| 欧美日韩美少妇| 成人黄色国产精品网站大全在线免费观看 | 日韩精品资源二区在线| 一本色道a无线码一区v| 高清beeg欧美| 韩国中文字幕2020精品| 日韩精彩视频在线观看| 夜夜操天天操亚洲| 亚洲日本电影在线| 中文字幕一区二区三| 久久五月婷婷丁香社区| 日韩亚洲欧美在线| 欧美日韩dvd在线观看| 色婷婷一区二区三区四区| 风间由美性色一区二区三区| 国内欧美视频一区二区| 日韩电影在线免费看| 亚洲午夜精品网| 一区二区三区日韩欧美| 国产精品久99| 欧美美女直播网站| 美女视频一区二区| 日韩不卡一区二区| 奇米色777欧美一区二区| 丝袜美腿亚洲一区二区图片| 午夜欧美大尺度福利影院在线看 | 欧美一级片在线看| 日韩一区二区免费在线电影| 欧美日韩国产高清一区二区三区| 在线影视一区二区三区| 国产尤物一区二区| 一区二区三区在线观看网站| 亚洲天堂成人网| 亚洲欧美日韩成人高清在线一区| 中文字幕一区二区视频| 亚洲欧美一区二区三区孕妇| 一区二区三区精品在线观看| 亚洲高清三级视频| 日韩国产欧美在线观看| 久久成人精品无人区| 国产精品小仙女| 丝袜美腿亚洲一区二区图片| 蜜桃视频在线一区| 久久99国产精品免费| 久久97超碰色| 成人国产精品免费网站| 91理论电影在线观看| 欧美日韩高清一区二区不卡| 制服丝袜av成人在线看| 欧美不卡一区二区| 制服视频三区第一页精品| 欧美草草影院在线视频| 国产精品三级久久久久三级| 精品久久五月天| 日本一区二区三区电影| 久久综合色天天久久综合图片| 国产日韩在线不卡| 亚洲精品成人悠悠色影视| 日日骚欧美日韩| 国产精品一二三四区| 一本一道久久a久久精品综合蜜臀| 欧美精品黑人性xxxx| 精品99久久久久久| 日韩精品在线一区二区| 国产女同性恋一区二区| 亚洲国产日产av| 国产一区二区看久久| 在线观看网站黄不卡| 色又黄又爽网站www久久| 777xxx欧美| 欧美国产日韩a欧美在线观看| 一区二区三区高清| 国产精一区二区三区| 色欧美片视频在线观看| 欧美大黄免费观看| 亚洲男帅同性gay1069| 久久精品国产一区二区| 91在线观看成人| 欧美成人精品3d动漫h| 一区二区三区**美女毛片| 韩国av一区二区| 欧美美女bb生活片| 国产精品水嫩水嫩| 美女任你摸久久| 色综合久久99| 国产欧美精品一区二区色综合 | 国产麻豆精品在线观看| 欧美亚洲动漫精品| 国产精品美女久久久久久2018| 奇米综合一区二区三区精品视频| 91香蕉视频黄| 国产亚洲成aⅴ人片在线观看| 日韩国产欧美在线视频| 日本精品一区二区三区四区的功能| 精品免费视频一区二区| 午夜精品久久久久影视| 色婷婷久久一区二区三区麻豆| 精品国产伦一区二区三区观看方式| 亚洲一区二区三区影院| 91麻豆国产在线观看| 中文字幕免费不卡| 国产一区视频在线看| 欧美一级日韩免费不卡| 婷婷激情综合网| 欧美一a一片一级一片| 国产精品久线在线观看| 国产成人精品亚洲777人妖| 91色|porny| 国产精品不卡一区二区三区| 福利一区在线观看| 国产日韩欧美麻豆| 国产美女精品在线| 欧美va亚洲va| 久久99久久99小草精品免视看| 欧美日韩一区二区不卡| 亚洲国产成人精品视频| 91久久线看在观草草青青| 亚洲男同1069视频| 在线日韩av片| 亚洲一区日韩精品中文字幕| 色94色欧美sute亚洲线路一久| 亚洲欧美一区二区三区国产精品 | 国产成人精品免费一区二区| 国产午夜亚洲精品理论片色戒 | 国内精品伊人久久久久av影院| 精品精品国产高清一毛片一天堂| 全部av―极品视觉盛宴亚洲| 日韩色视频在线观看| 狂野欧美性猛交blacked| 久久影院视频免费| 国产成人午夜精品影院观看视频 | 久久久蜜桃精品| 高清不卡一区二区在线| 亚洲天堂免费看| 欧亚一区二区三区| 天堂蜜桃一区二区三区| 日韩欧美成人激情| 国产成人亚洲精品青草天美| 国产精品麻豆视频| 色悠悠亚洲一区二区| 午夜精品影院在线观看| 日韩精品一区二区三区在线播放| 国产剧情一区在线| 自拍偷拍国产亚洲| 欧美伦理电影网| 国产美女精品人人做人人爽| 成人免费在线观看入口| 欧美视频一区二区三区| 久久精品国产久精国产| 国产精品日日摸夜夜摸av| 在线影院国内精品| 韩国三级在线一区|