⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tty.h

📁 Minix3.11的源码。[MINIX 3是一个为高可靠性应用而设计的自由且简洁的类UNIX系统。]
💻 H
字号:
/*	tty.h - Terminals	*/#include <timers.h>#include "../../kernel/const.h"#include "../../kernel/type.h"#undef lock#undef unlock/* First minor numbers for the various classes of TTY devices. */#define CONS_MINOR	   0#define LOG_MINOR	  15#define RS232_MINOR	  16#define TTYPX_MINOR	 128#define PTYPX_MINOR	 192#define LINEWRAP	   1	/* console.c - wrap lines at column 80 */#define TTY_IN_BYTES     256	/* tty input queue size */#define TAB_SIZE           8	/* distance between tab stops */#define TAB_MASK           7	/* mask to compute a tab stop position */#define ESC             '\33'	/* escape */#define O_NOCTTY       00400	/* from <fcntl.h>, or cc will choke */#define O_NONBLOCK     04000struct tty;typedef _PROTOTYPE( int (*devfun_t), (struct tty *tp, int try_only) );typedef _PROTOTYPE( void (*devfunarg_t), (struct tty *tp, int c) );typedef struct tty {  int tty_events;		/* set when TTY should inspect this line */  int tty_index;		/* index into TTY table */  int tty_minor;		/* device minor number */  /* Input queue.  Typed characters are stored here until read by a program. */  u16_t *tty_inhead;		/* pointer to place where next char goes */  u16_t *tty_intail;		/* pointer to next char to be given to prog */  int tty_incount;		/* # chars in the input queue */  int tty_eotct;		/* number of "line breaks" in input queue */  devfun_t tty_devread;		/* routine to read from low level buffers */  devfun_t tty_icancel;		/* cancel any device input */  int tty_min;			/* minimum requested #chars in input queue */  timer_t tty_tmr;		/* the timer for this tty */  /* Output section. */  devfun_t tty_devwrite;	/* routine to start actual device output */  devfunarg_t tty_echo;		/* routine to echo characters input */  devfun_t tty_ocancel;		/* cancel any ongoing device output */  devfun_t tty_break;		/* let the device send a break */  /* Terminal parameters and status. */  int tty_position;		/* current position on the screen for echoing */  char tty_reprint;		/* 1 when echoed input messed up, else 0 */  char tty_escaped;		/* 1 when LNEXT (^V) just seen, else 0 */  char tty_inhibited;		/* 1 when STOP (^S) just seen (stops output) */  char tty_pgrp;		/* slot number of controlling process */  char tty_openct;		/* count of number of opens of this tty */  /* Information about incomplete I/O requests is stored here. */  char tty_inrepcode;		/* reply code, TASK_REPLY or REVIVE */  char tty_inrevived;		/* set to 1 if revive callback is pending */  char tty_incaller;		/* process that made the call (usually FS) */  char tty_inproc;		/* process that wants to read from tty */  vir_bytes tty_in_vir;		/* virtual address where data is to go */  int tty_inleft;		/* how many chars are still needed */  int tty_incum;		/* # chars input so far */  char tty_outrepcode;		/* reply code, TASK_REPLY or REVIVE */  char tty_outrevived;		/* set to 1 if revive callback is pending */  char tty_outcaller;		/* process that made the call (usually FS) */  char tty_outproc;		/* process that wants to write to tty */  vir_bytes tty_out_vir;	/* virtual address where data comes from */  int tty_outleft;		/* # chars yet to be output */  int tty_outcum;		/* # chars output so far */  char tty_iocaller;		/* process that made the call (usually FS) */  char tty_ioproc;		/* process that wants to do an ioctl */  int tty_ioreq;		/* ioctl request code */  vir_bytes tty_iovir;		/* virtual address of ioctl buffer */  /* select() data */  int tty_select_ops;		/* which operations are interesting */  int tty_select_proc;		/* which process wants notification */  /* Miscellaneous. */  devfun_t tty_ioctl;		/* set line speed, etc. at the device level */  devfun_t tty_close;		/* tell the device that the tty is closed */  void *tty_priv;		/* pointer to per device private data */  struct termios tty_termios;	/* terminal attributes */  struct winsize tty_winsize;	/* window size (#lines and #columns) */  u16_t tty_inbuf[TTY_IN_BYTES];/* tty input buffer */} tty_t;/* Memory allocated in tty.c, so extern here. */extern tty_t tty_table[NR_CONS+NR_RS_LINES+NR_PTYS];extern int ccurrent;		/* currently visible console */extern int irq_hook_id;		/* hook id for keyboard irq */extern unsigned long kbd_irq_set;extern unsigned long rs_irq_set;/* Values for the fields. */#define NOT_ESCAPED        0	/* previous character is not LNEXT (^V) */#define ESCAPED            1	/* previous character was LNEXT (^V) */#define RUNNING            0	/* no STOP (^S) has been typed to stop output */#define STOPPED            1	/* STOP (^S) has been typed to stop output *//* Fields and flags on characters in the input queue. */#define IN_CHAR       0x00FF	/* low 8 bits are the character itself */#define IN_LEN        0x0F00	/* length of char if it has been echoed */#define IN_LSHIFT          8	/* length = (c & IN_LEN) >> IN_LSHIFT */#define IN_EOT        0x1000	/* char is a line break (^D, LF) */#define IN_EOF        0x2000	/* char is EOF (^D), do not return to user */#define IN_ESC        0x4000	/* escaped by LNEXT (^V), no interpretation *//* Times and timeouts. */#define force_timeout()	((void) (0))/* Memory allocated in tty.c, so extern here. */extern timer_t *tty_timers;		/* queue of TTY timers */extern clock_t tty_next_timeout;	/* next TTY timeout *//* Number of elements and limit of a buffer. */#define buflen(buf)	(sizeof(buf) / sizeof((buf)[0]))#define bufend(buf)	((buf) + buflen(buf))/* Memory allocated in tty.c, so extern here. */extern struct machine machine;	/* machine information (a.o.: pc_at, ega) *//* The tty outputs diagnostic messages in a circular buffer. */extern struct kmessages kmess;/* Function prototypes for TTY driver. *//* tty.c */_PROTOTYPE( void handle_events, (struct tty *tp)			);_PROTOTYPE( void sigchar, (struct tty *tp, int sig)			);_PROTOTYPE( void tty_task, (void)					);_PROTOTYPE( int in_process, (struct tty *tp, char *buf, int count)	);_PROTOTYPE( void out_process, (struct tty *tp, char *bstart, char *bpos,				char *bend, int *icount, int *ocount)	);_PROTOTYPE( void tty_wakeup, (clock_t now)				);_PROTOTYPE( void tty_reply, (int code, int replyee, int proc_nr,							int status)	);_PROTOTYPE( int tty_devnop, (struct tty *tp, int try)			);_PROTOTYPE( int select_try, (struct tty *tp, int ops)			);_PROTOTYPE( int select_retry, (struct tty *tp)				);/* rs232.c */_PROTOTYPE( void rs_init, (struct tty *tp)				);_PROTOTYPE( void rs_interrupt, (message *m)				);#if (CHIP == INTEL)/* console.c */_PROTOTYPE( void kputc, (int c)						);_PROTOTYPE( void cons_stop, (void)					);_PROTOTYPE( void do_new_kmess, (message *m)				);_PROTOTYPE( void do_diagnostics, (message *m)				);_PROTOTYPE( void do_get_kmess, (message *m)				);_PROTOTYPE( void scr_init, (struct tty *tp)				);_PROTOTYPE( void toggle_scroll, (void)					);_PROTOTYPE( int con_loadfont, (message *m)				);_PROTOTYPE( void select_console, (int cons_line)			);/* keyboard.c */_PROTOTYPE( void kb_init, (struct tty *tp)				);_PROTOTYPE( void kb_init_once, (void)					);_PROTOTYPE( int kbd_loadmap, (message *m)				);_PROTOTYPE( void do_panic_dumps, (message *m)				);_PROTOTYPE( void do_fkey_ctl, (message *m)				);_PROTOTYPE( void kbd_interrupt, (message *m)				);/* pty.c */_PROTOTYPE( void do_pty, (struct tty *tp, message *m_ptr)		);_PROTOTYPE( void pty_init, (struct tty *tp)				);_PROTOTYPE( void select_retry_pty, (struct tty *tp)			);_PROTOTYPE( int pty_status, (message *m_ptr)				);/* vidcopy.s */_PROTOTYPE( void vid_vid_copy, (unsigned src, unsigned dst, unsigned count));_PROTOTYPE( void mem_vid_copy, (u16_t *src, unsigned dst, unsigned count));#endif /* (CHIP == INTEL) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -