termios.h ( File view )

  • By 2010-08-31
  • View(s):24
  • Download(s):2
  • Point(s): 1
			#ifndef _TERMIOS_H
#define _TERMIOS_H

#define TTY_BUF_SIZE 1024	// tty 中的缓冲区长度。

/* 0x54 is just a magic number to make these relatively uniqe ('T') */
/* 0x54 只是一个魔数,目的是为了使这些常数唯一('T') */

// tty 设备的ioctl 调用命令集。ioctl 将命令编码在低位字中。
// 下面名称TC[*]的含义是tty 控制命令。
// 取相应终端termios 结构中的信息(参见tcgetattr())。
#define TCGETS 0x5401
// 设置相应终端termios 结构中的信息(参见tcsetattr(),TCSANOW)。
#define TCSETS 0x5402
// 在设置终端termios 的信息之前,需要先等待输出队列中所有数据处理完(耗尽)。对于修改参数
// 会影响输出的情况,就需要使用这种形式(参见tcsetattr(),TCSADRAIN 选项)。
#define TCSETSW 0x5403
// 在设置termios 的信息之前,需要先等待输出队列中所有数据处理完,并且刷新(清空)输入队列。
// 再设置(参见tcsetattr(),TCSAFLUSH 选项)。
#define TCSETSF 0x5404
// 取相应终端termio 结构中的信息(参见tcgetattr())。
#define TCGETA 0x5405
// 设置相应终端termio 结构中的信息(参见tcsetattr(),TCSANOW 选项)。
#define TCSETA 0x5406
// 在设置终端termio 的信息之前,需要先等待输出队列中所有数据处理完(耗尽)。对于修改参数
// 会影响输出的情况,就需要使用这种形式(参见tcsetattr(),TCSADRAIN 选项)。
#define TCSETAW 0x5407
// 在设置termio 的信息之前,需要先等待输出队列中所有数据处理完,并且刷新(清空)输入队列。
// 再设置(参见tcsetattr(),TCSAFLUSH 选项)。
#define TCSETAF 0x5408
// 等待输出队列处理完毕(空),如果参数值是0,则发送一个break(参见tcsendbreak(),tcdrain())。
#define TCSBRK 0x5409
// 开始/停止控制。如果参数值是0,则挂起输出;如果是1,则重新开启挂起的输出;如果是2,则挂起
// 输入;如果是3,则重新开启挂起的输入(参见tcflow())。
#define TCXONC 0x540A
//刷新已写输出但还没发送或已收但还没有读数据。如果参数是0,则刷新(清空)输入队列;如果是1,
// 则刷新输出队列;如果是2,则刷新输入和输出队列(参见tcflush())。
#define TCFLSH 0x540B
// 下面名称TIOC[*]的含义是tty 输入输出控制命令。
// 设置终端串行线路专用模式。
#define TIOCEXCL 0x540C
// 复位终端串行线路专用模式。
#define TIOCNXCL 0x540D
// 设置tty 为控制终端。(TIOCNOTTY - 禁止tty 为控制终端)。
#define TIOCSCTTY 0x540E
// 读取指定终端设备进程的组id(参见tcgetpgrp())。
#define TIOCGPGRP 0x540F
// 设置指定终端设备进程的组id(参见tcsetpgrp())。
#define TIOCSPGRP 0x5410
// 返回输出队列中还未送出的字符数。
#define TIOCOUTQ 0x5411
// 模拟终端输入。该命令以一个指向字符的指针作为参数,并假装该字符是在终端上键入的。用户必须
// 在该控制终端上具有超级用户权限或具有读许可权限。
#define TIOCSTI 0x5412
// 读取终端设备窗口大小信息(参见winsize 结构)。
#define TIOCGWINSZ 0x5413
// 设置终端设备窗口大小信息(参见winsize 结构)。
#define TIOCSWINSZ 0x5414
// 返回modem 状态控制引线的当前状态比特位标志集(参见下面185-196 行)。
#define TIOCMGET 0x5415
// 设置单个modem 状态控制引线的状态(true 或false)(Individual control line Set)。
#define TIOCMBIS 0x5416
// 复位单个modem 状态控制引线的状态(Individual control line clear)。
#define TIOCMBIC 0x5417
// 设置modem 状态引线的状态。如果某一比特位置位,则modem 对应的状态引线将置为有效。
#define TIOCMSET 0x5418
// 读取软件载波检测标志(1 - 开启;0 - 关闭)。
// 对于本地连接的终端或其它设备,软件载波标志是开启的,对于使用modem 线路的终端或设备则
// 是关闭的。为了能使用这两个ioctl 调用,tty 线路应该是以O_NDELAY 方式打开的,这样open()
// 就不会等待载波。
#define TIOCGSOFTCAR 0x5419
// 设置软件载波检测标志(1 - 开启;0 - 关闭)。
#define TIOCSSOFTCAR 0x541A
// 返回输入队列中还未取走字符的数目。
#define TIOCINQ 0x541B

// 窗口大小(Window size)属性结构。在窗口环境中可用于基于屏幕的应用程序。
// ioctls 中的TIOCGWINSZ 和TIOCSWINSZ 可用来读取或设置这些信息。
struct winsize
{

  unsigned short ws_row;	// 窗口字符行数。
  unsigned short ws_col;	// 窗口字符列数。
  unsigned short ws_xpixel;	// 窗口宽度,象素值。
  unsigned short ws_ypixel;	// 窗口高度,象素值。

};

// AT&T 系统V 的termio 结构。
#define NCC 8			// termio 结构中控制字符数组的长度。
struct termio
{

  unsigned short c_iflag;	/* input mode flags */// 输入模式标志。
  unsigned short c_oflag;	/* output mode flags */// 输出模式标志。
  unsigned short c_cflag;	/* control mode flags */// 控制模式标志。
  unsigned short c_lflag;	/* local mode flags */// 本地模式标志。
  unsigned char c_line;		/* line discipline */// 线路规程(速率)。
  unsigned char c_cc[NCC];	/* control characters */// 控制字符数组。

};

// POSIX 的termios 结构。
#define NCCS 17			// termios 结构中控制字符数组的长度。
struct termios
{

  unsigned long c_iflag;	/* input mode flags */// 输入模式标志。
  unsigned long c_oflag;	/* output mode flags */// 输出模式标志。
  unsigned long c_cflag;	/* control mode flags */// 控制模式标志。
  unsigned long c_lflag;	/* local mode flags */// 本地模式标志。
  unsigned char c_line;		/* line discipline */// 线路规程(速率)。
  unsigned char c_cc[NCCS];	/* control characters */// 控制字符数组。

};

/* c_cc characters *//* c_cc 数组中的字符 */
// 以下是c_cc 数组对应字符的索引值。
#define VINTR 0			// c_cc[VINTR] = INTR (^C),\003,中断字符。
#define VQUIT 1			// c_cc[VQUIT] = QUIT (^\),\034,退出字符。
#define VERASE 2		// c_cc[VERASE] = ERASE (^H),\177,擦出字符。
#define VKILL 3			// c_cc[VKILL] = KILL (^U),\025,终止字符。
#define VEOF 4			// c_cc[VEOF] = EOF (^D),\004,文件结束字符。
#define VTIME 5			// c_cc[VTIME] = TIME (\0),\0, 定时器值(参见后面说明)。
#define VMIN 6			// c_cc[VMIN] = MIN (\1),\1, 定时器值。
#define VSWTC 7			// c_cc[VSWTC] = SWTC (\0),\0, 交换字符。
#define VSTART 8		// c_cc[VSTART] = START (^Q),\021,开始字符。
#define VSTOP 9			// c_cc[VSTOP] = STOP (^S),\023,停止字符。
#define VSUSP 10		// c_cc[VSUSP] = SUSP (^Z),\032,挂起字符。
#define VEOL 11			// c_cc[VEOL] = EOL (\0),\0, 行结束字符。
#define VREPRINT 12		// c_cc[VREPRINT] = REPRINT (^R),\022,重显示字符。
#define VDISCARD 13		// c_cc[VDISCARD] = DISCARD (^O),\017,丢弃字符。
#define VWERASE 14		// c_cc[VWERASE] = WERASE (^W),\027,单词擦除字符。
#define VLNEXT 15		// c_cc[VLNEXT] = LNEXT (^V),\026,下一行字符。
#define VEOL2 16		// c_cc[VEOL2] = EOL2 (\0),\0, 行结束2。

/* c_iflag bits *//* c_iflag 比特位 */
// termios 结构输入模式字段c_iflag 各种标志的符号常数。
#define IGNBRK 0000001		// 输入时忽略BREAK 条件。
#define BRKINT 0000002		// 在BREAK 时产生SIGINT 信号。
#define IGNPAR 0000004		// 忽略奇偶校验出错的字符。
#define PARMRK 0000010		// 标记奇偶校验错。
#define INPCK 0000020		// 允许输入奇偶校验。
#define ISTRIP 0000040		// 屏蔽字符第8 位。
#define INLCR 0000100		// 输入时将换行符NL 映射成回车符CR。
#define IGNCR 0000200		// 忽略回车符CR。
#define ICRNL 0000400		// 在输入时将回车符CR 映射成换行符NL。
#define IUCLC 0001000		// 在输入时将大写字符转换成小写字符。
#define IXON 0002000		// 允许开始/停止(XON/XOFF)输出控制。
#define IXANY 0004000		// 允许任何字符重启输出。
#define IXOFF 0010000		// 允许开始/停止(XON/XOFF)输入控制。
#define IMAXBEL 0020000		// 输入队列满时响铃。

/* c_oflag bits *//* c_oflag 比特位 */
// termios 结构中输出模式字段c_oflag 各种标志的符号常数。
#define OPOST 0000001		// 执行输出处理。
#define OLCUC 0000002		// 在输出时将小写字符转换成大写字符。
#define ONLCR 0000004		// 在输出时将换行符NL 映射成回车-换行符CR-NL。
#define OCRNL 0000010		// 在输出时将回车符CR 映射成换行符NL。
#define ONOCR 0000020		// 在0 列不输出回车符CR。
#define ONLRET 0000040		// 换行符NL 执行回车符的功能。
#define OFILL 0000100		// 延迟时使用填充字符而不使用时间延迟。
#define OFDEL 0000200		// 填充字符是ASCII 码DEL。如果未设置,则使用ASCII NULL。
#define NLDLY 0000400		// 选择换行延迟。
#define NL0 0000000		// 换行延迟类型0。
#define NL1 0000400		// 换行延迟类型1。
#define CRDLY 0003000		// 选择回车延迟。
#define CR0 0000000		// 回车延迟类型0。
#define CR1 0001000		// 回车延迟类型1。
#define CR2 0002000		// 回车延迟类型2。
#define CR3 0003000		// 回车延迟类型3。
#define TABDLY 0014000		// 选择水平制表延迟。
#define TAB0 0000000		// 水平制表延迟类型0。
#define TAB1 0004000		// 水平制表延迟类型1。
#define TAB2 0010000		// 水平制表延迟类型2。
#define TAB3 0014000		// 水平制表延迟类型3。
#define XTABS 0014000		// 将制表符TAB 换成空格,该值表示空格数。
#define BSDLY 0020000		// 选择退格延迟。
#define BS0 0000000		// 退格延迟类型0。
#define BS1 0020000		// 退格延迟类型1。
#define VTDLY 0040000		// 纵向制表延迟。
#define VT0 0000000		// 纵向制表延迟类型0。
#define VT1 0040000		// 纵向制表延迟类型1。
#define FFDLY 0040000		// 选择换页延迟。
#define FF0 0000000		// 换页延迟类型0。
#define FF1 0040000		// 换页延迟类型1。

/* c_cflag bit meaning *//* c_cflag 比特位的含义 */
// termios 结构中控制模式标志字段c_cflag 标志的符号常数(8 进制数
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
linux0.00 B0% 04-10-07
<boot>0.00 B04-10-07 15:01
bootsect.s12.49 kB08-01-04 21:38
head.s13.22 kB08-01-04 21:38
setup.s12.42 kB08-01-04 21:38
<fs>0.00 B04-10-07 15:01
bitmap.c8.46 kB02-09-04 13:12
block_dev.c3.95 kB02-09-04 13:12
buffer.c17.71 kB02-09-04 13:12
char_dev.c4.09 kB02-09-04 13:12
exec.c18.90 kB02-09-04 13:12
fcntl.c3.33 kB02-09-04 13:12
file_dev.c4.82 kB02-09-04 13:12
file_table.c209.00 B02-09-04 13:12
inode.c14.92 kB02-09-04 13:12
ioctl.c1.94 kB02-09-04 13:12
Makefile6.80 kB08-01-04 21:45
namei.c37.20 kB02-09-04 13:12
open.c10.00 kB02-09-04 13:12
pipe.c5.42 kB02-09-04 13:12
read_write.c5.86 kB02-09-04 13:12
stat.c2.69 kB02-09-04 13:12
super.c13.57 kB02-09-04 13:12
truncate.c2.46 kB02-09-04 13:12
<include>0.00 B04-10-07 15:01
a.out.h8.22 kB02-09-04 13:14
<asm>0.00 B04-10-07 15:01
io.h772.00 B02-09-04 13:14
memory.h1.03 kB08-01-04 22:13
segment.h2.50 kB02-09-04 13:14
system.h4.08 kB02-09-04 13:14
const.h589.00 B02-09-04 13:14
ctype.h1.68 kB02-09-04 13:14
errno.h2.30 kB02-09-04 13:14
fcntl.h3.30 kB02-09-04 13:14
<linux>0.00 B04-10-07 15:01
config.h2.16 kB02-09-04 13:14
fs.h9.72 kB02-09-04 13:14
hdreg.h2.94 kB02-09-04 13:14
head.h760.00 B02-09-04 13:14
kernel.h1.44 kB02-09-04 13:14
mm.h473.00 B02-09-04 13:14
sched.h13.25 kB02-09-04 13:14
sys.h5.41 kB02-09-04 13:14
tty.h3.93 kB02-09-04 13:14
signal.h4.01 kB02-09-04 13:14
stdarg.h1.77 kB02-09-04 13:14
stddef.h378.00 B02-09-04 13:14
string.h21.75 kB02-09-04 13:14
<sys>0.00 B04-10-07 15:01
stat.h2.37 kB02-09-04 13:14
times.h377.00 B02-09-04 13:14
types.h1.10 kB02-09-04 13:14
utsname.h423.00 B02-09-04 13:14
wait.h1.48 kB02-09-04 13:14
termios.h13.58 kB02-09-04 13:14
time.h1.81 kB02-09-04 13:14
unistd.h9.21 kB02-09-04 13:14
utime.h392.00 B02-09-04 13:14
<init>0.00 B04-10-07 15:01
main.c12.52 kB02-09-04 13:12
<kernel>0.00 B04-10-07 15:01
asm.s5.10 kB08-01-04 22:48
<blk_drv>0.00 B04-10-07 15:01
blk.h5.69 kB02-09-04 13:14
floppy.c23.49 kB02-09-04 13:12
hd.c17.14 kB02-09-04 13:12
ll_rw_blk.c7.59 kB02-09-04 13:12
Makefile4.25 kB08-01-04 22:53
ramdisk.c6.13 kB02-09-04 13:12
<chr_drv>0.00 B04-10-07 15:01
console.c30.91 kB02-09-04 13:12
keyboard.S21.04 kB08-01-04 22:59
Makefile4.81 kB08-01-04 22:59
rs_io.s5.75 kB08-01-04 22:59
serial.c2.91 kB02-09-04 13:12
tty_io.c18.40 kB02-09-04 13:12
tty_ioctl.c10.70 kB02-09-04 13:12
exit.c8.08 kB02-09-04 13:12
fork.c6.78 kB15-07-07 22:10
<math>0.00 B04-10-07 15:01
Makefile3.21 kB08-01-04 23:01
math_emulate.c2.08 kB02-09-04 13:12
mktime.c2.72 kB02-09-04 13:12
panic.c952.00 B02-09-04 13:12
printk.c1.75 kB02-09-04 13:12
sched.c18.57 kB16-07-07 21:23
signal.c5.61 kB02-09-04 13:12
sys.c7.62 kB02-09-04 13:12
system_call.s12.53 kB08-01-04 22:48
traps.c8.29 kB04-10-07 14:57
vsprintf.c9.96 kB02-09-04 13:12
<lib>0.00 B04-10-07 15:01
close.c397.00 B02-09-04 13:12
ctype.c1.72 kB02-09-04 13:12
dup.c401.00 B02-09-04 13:12
errno.c66.00 B02-09-04 13:12
execve.c607.00 B02-09-04 13:12
Makefile4.83 kB08-01-04 22:30
malloc.c13.50 kB02-09-04 13:12
open.c1.22 kB02-09-04 13:12
setsid.c382.00 B02-09-04 13:12
string.c199.00 B02-09-04 13:12
wait.c774.00 B02-09-04 13:12
write.c545.00 B02-09-04 13:12
_exit.c616.00 B02-09-04 13:12
Makefile8.58 kB08-01-04 22:21
<mm>0.00 B04-10-07 15:01
Makefile2.91 kB08-01-04 22:34
memory.c25.10 kB02-09-04 13:12
page.s842.00 B08-01-04 22:34
<tools>0.00 B04-10-07 15:01
build.c8.12 kB02-09-04 13:12
...
Sponsored links

termios.h (286.77 kB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D