line discipline(LDISC) 线路规程,是linux和类unix系统终端子系统的一个软件驱动层。终端子系统从上到下可划分为三层:

  • 顶层tty core驱动层提供字符设备接口(因为所有的终端设备都是字符设备);
  • 最底层是tty driver层用来和硬件进行通讯,实现tty_operations供tty core和 LDISC层调用;
  • 中间层line discipline实现终端输入输出数据处理的策略。

line discipline把tty core和tty driver粘合在一起,策略的分离使得tty core和tty driver不需要关注数据语法处理,tty driver可以被相同的硬件复用,而只需更改line discipline。

linux终端设备缺省的线路规程是N_TTY,它从tty driver和应用程序接收数据,按照终端设置处理数据。对于输入数据,它处理特殊的中断字符(比如Control-C),删除字符(backspace, delete)等等;对于输出数据,它用CR/LF序列替换LF字符。当uart port用做普通串口时,使用N_TTY线路规程。

当uart port设备用做serial modem 的internet拨号连接时,使用PPP线路规程处理数据;ppp LDISC把从uart core来的串口数据组装为PPP输入packet,然后分发给网络协议栈;ppp LDISC把从网络协议栈发送来的数据拆包发送给uart port。

最初在阅读linux tty终端系统代码时,对LDISC非常困惑,除非想了解line discipline语法处理细节,完全可以越过大部分ldisc代码。

ldisc工作于tty core和tty driver之间,ldisc需要为二者提供如下接口函数:

TTY core端接口:

open()

close()

hangup()

write()

flush_buffer()

chars_in_buffer()

set_termios()

read()

poll()

ioctl()

compat_ioctl()

TTY driver端接口:

receive_buf()

write_wakeup()

dcd_change()

linux 终端设备 - 线路规程相关推荐

  1. Linu系统编程---10(Linux的终端,线路规程,网络终端,进程组)

    终端 输入输出设备的总称 在 UNIX 系统中,用户通过终端登录系统后得到一个 Shell 进程,这个终端成为 Shell 进程的控制终端(Controlling Terminal), 进程中,控制终 ...

  2. Linux串口驱动(2) - 线路规程

    1. 注册tty的ldisc ldisc全称 line discipline(线路规程),因为历史原因,tty属于一类设备,而串口设备只是其中一种,所以该模块负责将用户操作桥接到不同的tty驱动.从代 ...

  3. Linux终端设备解析

    虽然一直做嵌入式Linux,宿主机和开发板通信天天都在用tty设备通信,但是其实自己对TTY设备及终端的概念认识几乎是0.对于Linux内核的终端.tty.控制台等概念的认识很模糊.由于在学习的时候碰 ...

  4. Linux终端设备驱动

    第十四章 Linux终端设备驱动 本章导读 在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台.串口和伪终端3类终端设备. 14.1节阐述了终端设备的 ...

  5. tty线路规程(discipline)设置

    1. tty线路设置用户空间接口 可以调用用户空间的termios库函数,改变tty线路设置,或者获取当前线路设置. 用户空间应用程序需引用 termios.h 头文件,该头文件包含了终端设备的I/O ...

  6. linux终端设备:tty子系统相关的初始化

    linux类系统相较于windos类系统用"魔幻"也不为过,神奇的控制台终端如ctrl+alt+F1至F6.UI桌面打开终端.远程ssh登录等等,在神奇的命令行协助下总能随时随地完 ...

  7. linux终端设备:pty设备初始化、创建过程

    上一篇<<linux终端设备:tty子系统相关的初始化>>分析了tty子系统.tty设备.console设备的初始化及创建过程.默认情况console终端的启动程序为agett ...

  8. 第14章 Linux终端设备驱动之终端设备

    本章知识点 在 Linux 系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux 中包含控制台.串口和伪终端 3 类终端设备. 1.终端设备的概念及分类, Linux 终端设备 ...

  9. 虹科分享 | Linux终端设备的TSN时间敏感网络协议实现

    通过为以太网带来工业级的稳健性和可靠性,时间敏感网络 (TSN) 提供了 IEEE 标准通信技术,可实现来自任何供应商的符合标准的工业设备之间的互操作性.它还消除了对关键和非关键通信网络进行物理分离的 ...

最新文章

  1. mysql按条件提取数据库_SQL中的where条件,在数据库中提取与应用浅析
  2. 加载NMGameX.dll时出错?
  3. windows 下启动zookeeper的zkServer.cmd服务闪退
  4. 表空间(tableSpace) 段(segment) 盘区(extent) 块(block) 关系
  5. java 线程安全 Lock
  6. 漫画算法python篇pdf_用Python抓取漫画并制作mobi格式电子书
  7. java聊天室设计_JAVA网络聊天室的设计与实现
  8. SVG中中文字体的显示
  9. 墨菲定律-感悟甚多,出于程序员用xmind做的
  10. 离线语音控制系统 唤醒词.命令字
  11. 无缘蜂鸣器——stm32定时器PWM实现控制发出“哆瑞咪发…“七个音及简单音乐
  12. 【转】清华梦的粉碎 - 写给清华大学的退学申请
  13. 64位系统安装32位打印机驱动
  14. 双模式IT:企业IT部门是否能够肩负双重劳动力角色的概念?
  15. LT9611 MIPI转HDMI芯片,方案成熟,提供技术支持
  16. [漏洞实战] 逻辑漏洞挖掘
  17. 管理系统页面布局 html,二十五个精美的后台管理界面模板和布局
  18. python-list、tuple
  19. 定制RLC防孤岛测试负载
  20. 在 KVM 虚拟机中运行 macOS 系统

热门文章

  1. Redis集群——主从配置
  2. 小程序获取城市经纬度_微信小程序demo:天气预报,根据经纬度获取城市,获取天气...
  3. 基于MATLAB图像检索系统GUI设计解析
  4. SEO的301和302重定向:应该使用哪个?
  5. directx修复工具win7_win10下安装win7双系统后启动没有引导菜单怎么解决
  6. ATI显卡优酷,PPs看电影花屏或全屏卡的解决方法(未验证)
  7. 如何思维导图的优缺点是什么绘制思维导图?
  8. 【Lifelong learning】Continual Learning with Knowledge Transfer for Sentiment Classification
  9. Unity+ Photon服务器实时对战游戏——Photon服务器介绍(一)
  10. 如何将HTTP站点转换成HTTPS、及后续问题