tty(四)tty框架分析

这篇具有很好参考价值的文章主要介绍了tty(四)tty框架分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于linux-3.14.16
重要文件:tty_io.c

一、tty子系统

开机添加了2个次设备号为0和1的字符设备,即/dev/tty和/dev/console。
tty(四)tty框架分析,Linux内核和驱动,linux

二、分配tty驱动接口alloc_tty_driver

最终调用的__tty_alloc_driver分配
先分配一个tty_driver
tty(四)tty框架分析,Linux内核和驱动,linux
因为flags为0,所以将会分配指定lines数量的ttys,termios,ports,并且cdevs将会用lines赋值,cdevs也将分配lines个。
tty(四)tty框架分析,Linux内核和驱动,linux

三、注册tty驱动接口tty_register_driver

获取设备号,指定了主设备,次设备,,将走else
tty(四)tty框架分析,Linux内核和驱动,linux
如果TTY_DRIVER_DYNAMIC_ALLOC被置位了,那么将会添加一个字符设备。
这里在分析serial核心的时候,没有找到对TTY_DRIVER_DYNAMIC_ALLOC置位,那么字符设备是什么时候创建的呢???

补充,是uart_add_one_port --》tty_port_register_device_attr --》tty_register_device_attr
tty(四)tty框架分析,Linux内核和驱动,linux
有一个全局链表tty_drivers来维护tty_driver,加入链表
tty(四)tty框架分析,Linux内核和驱动,linux
TTY_DRIVER_DYNAMIC_DEV被置位,所以不会走这个分支。
tty(四)tty框架分析,Linux内核和驱动,linux

总结:tty核心层,提供了2个重要接口,tty_driver的动态分配和注册,在注册tty_driver的过程中,首先静态申请了一批设备号,然后将tty_driver放入全局的tty_drivers来维护,tty_drivers是一个全局的数组。

四、tty_register_device_attr

因为在serial核心层,有uart_add_one_port接口,最终调用了tty_register_device_attr来创建字符设备,这里分析一下。

首先获取设备号。
tty(四)tty框架分析,Linux内核和驱动,linux

然后添加一个字符设备,说明每个串口都是一个独立的字符设备。
tty(四)tty框架分析,Linux内核和驱动,linux
tty(四)tty框架分析,Linux内核和驱动,linux文章来源地址https://www.toymoban.com/news/detail-524348.html

到了这里,关于tty(四)tty框架分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux tty 驱动之ioctls 函数

    在 struct tty_driver 中的 ioctl 函数被 tty 核心调用当 ioctl(2) 被在设备节点上 调用. 如果这个 tty 驱动不知道如何处理传递给它的 ioctl 值, 它应当返回 - ENOIOCTLCMD 来试图让 tty 核心实现一个通用的调用版本. 2.6 内核定义了大约 70 个不同的 tty ioctls, 可被用来发送给一个 tty 驱动. 大部

    2024年01月19日
    浏览(34)
  • 【嵌入式Linux内核驱动】05_IIC子系统 | 硬件原理与常见面试问题 | 应用编程 | 内核驱动 | 总体框架

    1.1 IIC 基础 IIC协议简介—学习笔记_iic标准协议_越吃越胖的黄的博客-CSDN博客 I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接微控制器、传感器、存储器和其他外设。 I2C使用两条线(SDA和SCL)进行通信,可以连接多个设备,每个设备都有一个唯一的地址。I2C总线上的

    2024年02月09日
    浏览(64)
  • linux 设备驱动之tty_operaions数据结构介绍

    tty_operations 结构包含所有的函数回调, 可以被一个 tty 驱动设置和被 tty 核心调 用. 当前, 所有包含在这个结构中的的函数指针也在 tty_driver 结构中, 但是会很快被 只有一个这个结构的实例来替代. int (*open)(struct tty_struct * tty, struct file * filp); open 函数. void (*close)(struct tty_struct *

    2024年01月19日
    浏览(47)
  • linux-2.6.22.6内核nand flash框架分析

    内核启动时会在串口打印nand flash的相关信息,通过该信息可定位到内核自带的nand flash相关驱动代码。 例如串口打印S3C24XX NAND Driver,搜索该字符串可找到/home/book/work/linux/linux-2.6.22.6/drivers/mtd/nand/s3c2410.c这个文件,这个就是nand flash驱动代码文件。 从该文件的s3c2410_nand_init函数

    2024年02月11日
    浏览(36)
  • Linux内核4.14版本——drm框架分析(1)——drm简介

    目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势  1.3 DRM图形显示框架  1.4 DRM图形显示框架涉及元素 1.4.1 DRM Framebuffer 1.4.2 CRTC 1.4.3 Encoder 1.4.4 Connector 1.4.5 Bridge 1.4.6 Panel 1.4.7 Fence 1.4.8 Plane 1.4.9 小结 2. DRM驱动框架 2.1 DRM驱动对象介绍 2.2 DR

    2024年02月02日
    浏览(41)
  • Linux内核4.14版本——drm框架分析(7)——用户态和内核态间的交互

             驱动会注册一个支持KMS的DRM设备时,会在/dev/drm/下创建一个card%d文件,用户态可以通过打开该文件,并对文件描述符做相应的操作实现相应的功能。该文件描述符对应的文件操作回调函数(filesystem_operations)位于drm_driver中,并由驱动程序填充。典型如下:      

    2024年02月09日
    浏览(62)
  • linux驱动系列学习之spi框架源码分析

            spi通信协议的原理、硬件之类的,请参考其他博主的文章,网上很多大佬都写得比较详细,通俗易懂。Linux下的spi框架的使用部分,可以参考其他的博主文章,也可以参考笔者之前写的文章。linux驱动系列学习之spi子系统(五)         本文介绍的是Linux下的spi框架,

    2024年02月03日
    浏览(40)
  • tty(四)tty框架分析

    基于linux-3.14.16 重要文件:tty_io.c 开机添加了2个次设备号为0和1的字符设备,即/dev/tty和/dev/console。 最终调用的__tty_alloc_driver分配 先分配一个tty_driver 因为flags为0,所以将会分配指定lines数量的ttys,termios,ports,并且cdevs将会用lines赋值,cdevs也将分配lines个。 获取设备号,指

    2024年02月12日
    浏览(30)
  • Linux内核4.14版本——drm框架分析(9)——DRM_IOCTL_MODE_GETCONNECTOR(drm_mode_getconnector)

    目录  1. drm_mode_getconnector分析 1.1 找到connector 1.2 计算该connector的encoder数量 1.3 把connector支持的encoder和数量返回给用户 1.4 把找到的connector的参数返回给应用 1.5 填充mode(很重要) 1.6 把找到的connector的参数返回给应用 1.7 计算mode的数量 1.8 把mode的参数和mode的数量返回给应用

    2024年02月11日
    浏览(43)
  • linux驱动开发:Linux 内核的一些函数

    1 、 MKDEV ( ma, mi ) 构造设备号,将主设备号和次设备号转换为设备号类型(dev_t)。 MKDEV 宏将主设备号( ma )左移 20 位,然后与次设备号( mi )相与,得到设备号。 dev_t 结构 主设备号 12 位

    2024年02月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包