linux 设备驱动之tty_operaions数据结构介绍

这篇具有很好参考价值的文章主要介绍了linux 设备驱动之tty_operaions数据结构介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

tty_operations 结构包含所有的函数回调, 可以被一个 tty 驱动设置和被 tty 核心调
用. 当前, 所有包含在这个结构中的的函数指针也在 tty_driver 结构中, 但是会很快被
只有一个这个结构的实例来替代.
int (*open)(struct tty_struct * tty, struct file * filp);
open 函数.
void (*close)(struct tty_struct * tty, struct file * filp);
close 函数.
int (*write)(struct tty_struct * tty, const unsigned char *buf, int count);
write 函数.
void (*put_char)(struct tty_struct *tty, unsigned char ch);
单字节写函数. 这个函数被 tty 核心调用当单个字节被写入设备. 如果一个 tty
驱动没有定义这个函数, write 函数被调用来替代, 当 tty 核心想发送一个单个
字节

void (*flush_chars)(struct tty_struct *tty);
void (*wait_until_sent)(struct tty_struct *tty, int timeout);
刷新数据到硬件的函数.
int (*write_room)(struct tty_struct *tty);
指示多少缓冲空闲的函数.
int (*chars_in_buffer)(struct tty_struct *tty);
指示多少缓冲满数据的函数.
int (*ioctl)(struct tty_struct *tty, struct file * file, unsigned int cmd,
unsigned long arg);
ioctl 函数. 这个函数被 tty 核心调用, 当 ioctl(2)在设备节点上被调用时.
void (*set_termios)(struct tty_struct *tty, struct termios * old);
set_termios 函数. 这个函数被 tty 核心调用, 当设备的 termios 设置已被改变
时.
void (*throttle)(struct tty_struct * tty);
void (*unthrottle)(struct tty_struct * tty);
void (*stop)(struct tty_struct *tty);
void (*start)(struct tty_struct *tty);
数据抑制函数. 这些函数用来帮助控制 tty 核心的输入缓存. 这个抑制函数被调
用当 tty 核心的输入缓冲满. tty 驱动应当试图通知设备不应当发送字符给它.
unthrottle 函数被调用当 tty 核心的输入缓冲已被清空, 并且它现在可以接收更
多数据. tty 驱动应当接着通知设备可以接收数据. stop 和 start 函数非常象
throttle 和 unthrottle 函数, 但是它们表示 tty 驱动应当停止发送数据给设备
以及以后恢复发送数据.
void (*hangup)(struct tty_struct *tty);
挂起函数. 这个函数被调用当 tty 驱动应当挂起 tty 设备. 任何需要做的特殊的
硬件操作应当在此时发生.
void (*break_ctl)(struct tty_struct *tty, int state);
线路中断控制函数. 这个函数被调用当这个 tty 驱动要打开或关闭线路的 BREAK
状态在 RS-232 端口上. 如果状态设为 -1, BREAK 状态应当打开. 如果状态设为
0, BREAK 状态应当关闭. 如果这个函数由 tty 驱动实现, tty 核心将处理
TCSBRK, TCSBRKP, TIOCSBRK, 和 TIOCCBRK ioctl. 否则, 这些 ioctls 被发送给
驱动 ioctl 函数.

void (*flush_buffer)(struct tty_struct *tty);
刷新缓冲和丢失任何剩下的数据.
void (*set_ldisc)(struct tty_struct *tty);
设置线路规程的函数. 这个函数被调用当 tty 核心已改变这个 tty 驱动的线路规
程. 这个函数通常不用并且不应当被一个驱动定义.
void (*send_xchar)(struct tty_struct *tty, char ch);
发送 X-类型 字符 的函数. 这个函数用来发送一个高优先级 XON 或者 XOFF 字符
给 tty 设备. 要被发送的字符在 ch 变量中指定.
int (*read_proc)(char *page, char **start, off_t off, int count, int *eof,
void *data);
int (*write_proc)(struct file *file, const char *buffer, unsigned long count,
void *data);
/proc 读和写函数.
int (*tiocmget)(struct tty_struct *tty, struct file *file);
获得当前的特定 tty 设备的线路设置. 如果从 tty 设备成功获取到, 应当返回这
个值给调用者.
int (*tiocmset)(struct tty_struct *tty, struct file *file, unsigned int set,
unsigned int clear);
设置当前的特定 tty 设备的线路设置. set 和 clear 包含了去设置或者清除的不
同的线路设置.文章来源地址https://www.toymoban.com/news/detail-804191.html

到了这里,关于linux 设备驱动之tty_operaions数据结构介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux驱动之INPUT设备驱动

    目录 一、开发环境 二、编写按键input设备的注册与事件上报         2.1 修改设备树文件                 1 添加 pinctrl 节点                 2、添加 KEY 设备节点                 3、检查 PIN 是否被其他外设使用         2.2 驱动程序编写      

    2024年02月07日
    浏览(50)
  • Linux设备驱动之SPI驱动

    Linux下SPI驱动分成两部分:主机驱动和设备驱动。 主机驱动:         主机侧SPI控制器使用 struct spi_master 描述,该结构体中包含了SPI控制器的序号(很多SoC中存在多个SPI控制器),片选数量,SPI信息传输的速率,配置SPI模式的函数指针(4种模式),实现数据传输的函数指针

    2023年04月11日
    浏览(55)
  • Linux 驱动学习笔记 ——(1)字符设备驱动

    《【正点原子】I.MX6U嵌入式Linux驱动开发指南》学习笔记 字符设备是 Linux 驱动中最基本的一类设备驱动,字节设备就是按照字节流来读写的设备,常见的字符设备包括:LED、蜂鸣器、按键、I2C 以及 SPI 等。 Linux 中一切皆文件,字符设备驱动加载成功后会在 /dev 目录下生成相

    2024年02月08日
    浏览(56)
  • Linux设备驱动——第三章字符驱动

    当对幸福的憧憬过于急切,那痛苦就在人的心灵深处升起。——加缪 本章的目的是编写一个完整的字符设备驱动。我们开发一个字符驱动是因为这一类适合大部分简单的硬件设备。字符驱动也比块驱动易于理解。本章的最终目的是编写一个模块化的字符驱动,但是我们不会在

    2024年02月08日
    浏览(83)
  • Linux驱动开发实战(一)——设备驱动模型

    在早期的Linux内核中并没有为设备驱动提供统一的设备模型。随着内核的不断扩大及系统更加复杂,编写一个驱动程序越来越困难,所以在Linux2.6内核中添加了一个统一的设备模型。这样,写设备驱动程序就稍微容易一些了。本章将对设备模型进行详细的介绍。 设备驱动模型

    2024年02月16日
    浏览(51)
  • Linux设备驱动开发 - 虚拟时钟Clock驱动示例

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 很多设备里面系统时钟架构极其复杂,让学习Clock驱动的盆友头大。这里我参考S3C2440的clock驱动写了一个virtual clock,即虚拟时钟驱动,分别包含clock的provider和

    2023年04月21日
    浏览(43)
  • Linux设备驱动模型(二)

    基于linux-3.14.16 设备模型(LDM)包括,总线、驱动、设备 以i2c总线为例,下面基本表现出了注册一个总线的过程。 1、定义一个总线bus_type,填充几个回调 其中几个比较重要 , match,总线设备和总线驱动的匹配规则 probe,总线设备和总线驱动匹配后将会执行的回调 2、调用b

    2024年02月05日
    浏览(55)
  • 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现

    大家好,今天给大家介绍 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现 ,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全! 可进群免费领取。 在嵌入式Linux系统中,设备驱动是连接硬件设备和操作系统之间的桥梁。

    2024年02月19日
    浏览(66)
  • Linux驱动的软件架构(二):设备驱动的分层思想

    在Linux 2.6以后的设备驱动模型中,需关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而 匹配由总线完成 。 一个现实的Linux设备和驱动通常都

    2024年02月13日
    浏览(49)
  • Linux -- 字符设备驱动--LED的驱动开发(初级框架)

    看原理图确定引脚,确定引脚输出什么电平才能点亮 / 熄灭 LED 看主芯片手册,确定寄存器操作方法:哪些寄存器?哪些位?地址是? 编写驱动:先写框架,再写硬件操作的代码 注意 :在芯片手册中确定的寄存器地址被称为 物理地址 ,在 Linux 内核中无法直接使用。 需要使

    2024年04月28日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包