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

📄 tty.h

📁 带中文注释的 linux 0.11 源代码0.11,很好的
💻 H
字号:
/** 'tty.h' defines some structures used by tty_io.c and some defines.** NOTE! Don't touch this without checking that nothing in rs_io.s or* con_io.s breaks. Some constants are hardwired into the system (mainly* offsets into 'tty_queue'*//** 'tty.h'中定义了tty_io.c 程序使用的某些结构和其它一些定义。** 注意!在修改这里的定义时,一定要检查rs_io.s 或con_io.s 程序中不会出现问题。* 在系统中有些常量是直接写在程序中的(主要是一些tty_queue 中的偏移值)。*/#ifndef _TTY_H#define _TTY_H#include <termios.h>		// 终端输入输出函数头文件。主要定义控制异步通信口的终端接口。#define TTY_BUF_SIZE 1024	// tty 缓冲区大小。// tty 等待队列数据结构。struct tty_queue{  unsigned long data;		// 等待队列缓冲区中当前数据指针字符数[??])。// 对于串口终端,则存放串行端口地址。  unsigned long head;		// 缓冲区中数据头指针。  unsigned long tail;		// 缓冲区中数据尾指针。  struct task_struct *proc_list;	// 等待进程列表。  char buf[TTY_BUF_SIZE];	// 队列的缓冲区。};// 以下定义了tty 等待队列中缓冲区操作宏函数。(tail 在前,head 在后)。// a 缓冲区指针前移1 字节,并循环。#define INC(a) ((a) = ((a)+1) & (TTY_BUF_SIZE-1))// a 缓冲区指针后退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)])// 缓冲区满(如果为1 的话)。#define FULL(a) (!LEFT(a))// 缓冲区中已存放字符的长度。#define CHARS(a) (((a).head-(a).tail)&(TTY_BUF_SIZE-1))// 从queue 队列项缓冲区中取一字符(从tail 处,并且tail+=1)。#define GETCH(queue,c) \(void)({c=(queue).buf[(queue).tail];INC((queue).tail);})// 往queue 队列项缓冲区中放置一字符(在head 处,并且head+=1)。#define PUTCH(c,queue) \(void)({(queue).buf[(queue).head]=(c);INC((queue).head);})// 判断终端键盘字符类型。#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 START_CHAR(tty) ((tty)->termios.c_cc[VSTART])	// 开始符。#define STOP_CHAR(tty) ((tty)->termios.c_cc[VSTOP])	// 结束符。#define SUSPEND_CHAR(tty) ((tty)->termios.c_cc[VSUSP])	// 挂起符。// tty 数据结构。struct tty_struct{  struct termios termios;	// 终端io 属性和控制字符数据结构。  int pgrp;			// 所属进程组。  int stopped;			// 停止标志。  void (*write) (struct tty_struct * tty);	// tty 写函数指针。  struct tty_queue read_q;	// tty 读队列。  struct tty_queue write_q;	// tty 写队列。  struct tty_queue secondary;	// tty 辅助队列(存放规范模式字符序列),};				// 可称为规范(熟)模式队列。extern struct tty_struct tty_table[];	// tty 结构数组。/* intr=^C quit=^| erase=del kill=^Ueof=^D vtime=\0 vmin=\1 sxtc=\0start=^Q stop=^S susp=^Z eol=\0reprint=^R discard=^U werase=^W lnext=^Veol2=\0*//* 中断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*/// 控制字符对应的ASCII 码值。[8 进制]#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"void rs_init (void);		// 异步串行通信初始化。(kernel/chr_drv/serial.c, 37)void con_init (void);		// 控制终端初始化。 (kernel/chr_drv/console.c, 617)void tty_init (void);		// tty 初始化。 (kernel/chr_drv/tty_io.c, 105)int tty_read (unsigned c, char *buf, int n);	// (kernel/chr_drv/tty_io.c, 230)int tty_write (unsigned c, char *buf, int n);	// (kernel/chr_drv/tty_io.c, 290)void rs_write (struct tty_struct *tty);	// (kernel/chr_drv/serial.c, 53)void con_write (struct tty_struct *tty);	// (kernel/chr_drv/console.c, 445)void copy_to_cooked (struct tty_struct *tty);	// (kernel/chr_drv/tty_io.c, 145)#endif

⌨️ 快捷键说明

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