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