首页 理论教育 Linux驱动程序开发实例:TTY驱动

Linux驱动程序开发实例:TTY驱动

时间:2026-01-26 理论教育 安安 版权反馈
【摘要】:一个TTY设备可以有一个或多个端口,端口用tty_port结构描述。每个TTY端口对应于/dev目录下一个设备节点。下面两个函数将TTY设备驱动接收到的数据放入TTY缓冲:int tty_insert_flip_char;//插入单个字符int tty_insert_flip_string;//插入多个字符例8.1 定制printk函数代码见\samples\8tty\8-1myprint。

tty_driver结构描述一种TTY驱动程序:

Linux内核实现的TTY驱动程序包含如下几种主类型:

#define TTY_DRIVER_TYPE_SYSTEM 0x0001

#define TTY_DRIVER_TYPE_CONSOLE 0x0002//控制台

#define TTY_DRIVER_TYPE_SERIAL 0x0003//串口

#define TTY_DRIVER_TYPE_PTY 0x0004

#define TTY_DRIVER_TYPE_SCC 0x0005/*SCC驱动*/

#define TTY_DRIVER_TYPE_SYSCONS 0x0006

每种TTY主类型下面有各自的子类型。

TTY驱动程序的操作接口用tty_operations结构描述:

内核使用tty_set_operations函数来设置tty_driver的操作函数接口:

void tty_set_operations(struct tty_driver*driver,const struct tty_operations*op);

注册一个TTY驱动使用tty_register_driver函数:(https://www.xing528.com)

int tty_register_driver(struct tty_driver*driver);

Linux内核已经实现TTY核心层,编写TTY驱动主要是实现tty_operations。

一个TTY设备可以有一个或多个端口,端口用tty_port结构描述。每个TTY端口对应于/dev目录下一个设备节点。

下面两个函数将TTY设备驱动接收到的数据放入TTY缓冲:

int tty_insert_flip_char(struct tty_port*port,unsigned char ch,char flag);//插入单个字符

int tty_insert_flip_string(struct tty_port*port,const unsigned char*chars,size_t size);//插入多个字符

例8.1 定制printk函数

代码见\samples\8tty\8-1myprint。驱动层参考代码如下:

运行结果如下:

[root@urbetter/home]#insmod myprint.ko

my_print_init!......

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈