- 11
- 0
- 约1.52万字
- 约 16页
- 2019-03-31 发布于江苏
- 举报
Linux 设备模型之tty 驱动架构分析
一:前言
Tty 这个名称源于电传打字节的简称。在linux 表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出
设备显示器的控制终端和串口终端.也有对应于不存在设备的pty 驱动。在如此众多的终端模型之中,linux 是怎么将它们统一
建模的呢?这就是我们今天要讨论的问题.
二:tty 驱动概貌
Tty 架构如下所示:
如上图所示,用户空间主要是通过设备文件同tty_core 交互.tty_core 根据用空间操作的类型再选择跟line discipline 和
tty_driver 交互.例如设置硬件的ioctl 指令就直接交给tty_driver 处理。Read 和write 操作就会交给line discipline 处理.
Line discipline 是线路规程的意思。正如它的名字一样,它表示的是这条终端”线程” 的输入与输出规范设置.主要用来进行输入
/输出数据的预处理。处理之后。就会将数据交给tty_driver
Tty_driver 就是终端对应的驱动了。它将字符转换成终端可以理解的字串.将其传给终端设备。
值得注意的是,这个架构没有为tty_drivero 提供read 操作。也就是说tty_core 和line discipline 都没有办法从tty_driver
里直接读终端信息。这是因为tty_driver 对就的hardware 并不一定是输入数据和输出数据的共同负载者。例如控制终端,输
出设备是显示器。输入设备是键盘。基于这样的原理。在line discipline 中有一个输入缓存区。并提供了一个名叫receive_buf()
的接口函数。对应的终端设备只要调用line discipine 的receiver_buf 函数,将数据写入到输入缓存区就可以了。
如果一个设备同时是输入设备又是输出设备。那在设备的中断处理中调用receive_buf()将数据写入即可.
三:tty 驱动接口分析
具体的tty 驱动设计可以参考LDD3。这里只对它的接口实现做一个分析.tty driver 的所有操作都包含在tty_driver 中。内核
即供了一个名叫alloc_tty_driver()来分配这个tty_driver。当然我们也可以在自己的驱动中将它定义成一个静态的结构。对
tty_driver 进行一些必要的初始化之后,调用tty_register_driver()将其注册.
alloc_tty_driver()接口代码如下所示:
struct tty_driver *alloc_tty_driver(int lines)
{
struct tty_driver *driver;
driver = kzalloc(sizeof(struct tty_driver), GFP_KERNEL);
if (driver) {
driver-magic = TTY_DRIVER_MAGIC;
driver-num = lines;
/* later well move allocation of tables here */
}
return driver;
}
这个函数只有一个参数。这个参数的含义为line 的个数。也即次设备号的个数。注意每个设备文件都会对应一个line.
在这个接口里为tty_driver 分配内存,然后将driver-mage.driver-num 初始化之后就返回了.
tty_register_driver()用来注册一个tty_driver。代码如下:
int tty_register_driver(struct tty_driver *driver)
{
int error;
int i;
dev_t dev;
void **p = NULL;
//TTY_DRIVER_INSTALLED: 已安装的
if (driver-flags TTY_DRIVER_INSTALLED)
return 0;
//TTY_DRIVER_DEVPTS_MEM:使用devpts 进行动态内存映射
if (!(driver-flags TTY_DRIVER_DEVPTS_MEM) driver-nu
您可能关注的文档
最近下载
- GL140监理指令单04(四标检查井盖板违规施工).doc VIP
- 第5课美化处理图片(教学课件)信息科技人教版三年级上册2025.ppt
- 抗苗勒氏管激素与多囊卵巢综合征的相关性研究.pdf VIP
- 广东深圳市华睿欣能投资控股集团有限公司2026届校园招聘备考题库及答案详解1套.docx VIP
- ISO17021标准-2011(中文版).pdf VIP
- 创新大赛真题及答案解析2025.doc VIP
- 单面彩钢酚醛复合风管专项施工工艺标准.pdf VIP
- 综合布线系统设计与实施(第三版).pptx VIP
- 2025年广西钦州英语试卷及答案.doc
- Dreamweaver CC网页设计与制作-全套PPT课件.pdf VIP
原创力文档

文档评论(0)