Linux内核TTY子系统有什么(7)

接前一篇文章:Linux内核TTY子系统有什么(6)

本文内容参考:

Linux TTY子系统框架-优快云博客

一文彻底讲清Linux tty子系统架构及编程实例-优快云博客

linux TTY子系统(3) - tty driver_sys tty device driver-优快云博客

Linux TTY 子系统框架_linux tty体系-优快云博客

LinuxTTY 子系统2_tty子系统-优快云博客

Linux TTY Driver_tty driver配置-优快云博客

UART驱动学习二(TTY体系)_serdev-优快云博客

解密TTY - QiuhaoLi - 博客园

特此致谢!

二、TTY子系统框架

在Linux内核中,TTY子系统位于Linux内核源码(linux-6.1.10)/drivers/tty/下:

9e1d93f6dd5d467c9c281799d99a9c88.png

​tty目录中的内容如下: 

865f60e48d60460e8d0735d2f6e365d2.png

71e941f9a98c413b92e56774e4cc145b.png

TTY的总体框架(Framework)如下:

76f742fd7178436ca656783b187c6f31.png

​​由上往下依次对各层进行说明:

  • 应用层(Application)

应用层位于用户空间(User Space)。在用户空间,操作TTY的方法就是系统调用open、read、write、ioctl、close(release)等操作设备文件(如/dev/tty、/dev/console等)。

注意:以下各层就进入内核空间(Kernel Space)了。

  • 字符设备驱动(Char Device Driver)

以字符设备驱动的形式,向应用程序提供统一接口open、read、write、ioctl、release等,以便输入输出数据。

  • TTY核心(TTY Core)

TTY Core是TTY框架的核心,是对整个TTY设备的抽象,对用户提供统一的接口。TTY核心层功能包括:

1)以字符设备的形式,向用户空间提供访问TTY设备的接口。

设备号(主, 次)              字符设备                                   备注
(5, 0)                     /dev/tty                     控制终端(Controlling Terminal)
(5, 1)                     /dev/console                 控制台终端(Console Terminal)
(4, 0)                     /dev/vc/0 or /dev/tty0       虚拟终端(Virtual Terminal)
(4, 1)                     /dev/vc/1 or /dev/tty1       虚拟终端(Virtual Terminal)
…                         …                                             …
(x, x)                     /dev/ttyS0                   串口终端(名称和设备号由驱动自行决定)
…                         …                                             …
(x, x)                     /dev/ttyUSB0                 USB转串口终端
…                         …                                             …

2)通过设备模型中的struct device结构抽象TTY设备,并通过struct tty_driver抽象该设备的驱动,并提供相应的register接口。TTY驱动程序的编写,简化为填充并注册相应的struct tty_driver结构。

3)使用struct tty_struct、struct tty_port等数据结构,从逻辑上抽象TTY设备及其“组件”,以实现硬件无关的逻辑。

4)抽象出名称为线路规程(Line Disciplines)的模块,在向TTY硬件发送数据之前,以及从TTY设备接收数据之后,进行相应的处理(如特殊字符的转换等)。

  • 系统控制台核心(System Console Core)

在Linux内核中,系统控制台(System Core)主要有两个功能:

1)显示内核信息。

2)与用户进行交互。

  • 线路规程(TTY Line Discipline)

线路规程以特殊的方式对数据进行二次加工,通常表现为协议的转换,对传输数据的格式化,以便可以虚拟的“插入”到任何TTY设备。

  • TTY Drivers及System Console Drivers

该层主要用于实现各类终端的驱动,用以控制实际硬件设备、收发数据。其有3种不通类型的驱动:控制台,串口,pty。其中,控制台和 pty 驱动已经被编写进内核。

更多内容请看下回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值