1)终端设备数据发送和接收过程中的数据流和函数调用关系
2) tty 线路设置及流向
a、线路设置用户空间接口 (用户可用如下两种方式改变 tty 设备的线路设置或者获取当前线路设置)
1、调用用户空间的 termios 库函数
2、对 tty 设备节点进行 ioctl()调用
b、tty 驱动的操作
1、 、tty 驱动的set_termios 函数
说明:大部分 termios 用户空间函数被库转换为对驱动节点的 ioctl()调用,而 tty ioctl
中的大部分命令会被 tty 核心转换为对 tty 驱动的 set_termios()函数的调用
tty_operations中的 set_termios()函数原型为:
void(*set_termios)(struct tty_struct *tty,struct termios *old);
2、 tty 驱动的 tiocmget 和 tiocmset 函数
对 TIOCMGET、TIOCMSET、TIOCMBIC 和 TIOCMBIS IO 控制命令的调用将被
tty 核心转换为对 tty 驱动 tiocmget()函数和 tiocmset()函数的调用,TIOCMGET 对应
tiocmget()函数,TIOCMSET、TIOCMBIC 和 TIOCMBIS 对应 tiocmset()函数
3、tty 驱动的 ioctl 函数
当用户在 tty 设备节点上进行 ioctl()调用时,tty_operations 中的 ioctl()函数会被
tty 核 心调 用。 如 果 tty 驱动不知道如何处理传递给它的 ioctl 值 , 它 返回
–ENOIOCTLCMD,之后 tty 核心会执行一个通用的操作
参考资料:Linux 设备驱动开发详解-宋宝华