棋盘游戏类网站开发汕头网站建设推广
应用编程我们就不讲了,大概看一下就懂了,我们来看看一种字符设备驱动程序的注册方法,因为这个在串口的驱动程序中广泛的应用了:
我们先来看看我们之前是怎么去写的:
编写驱动程序的套路:
-
确定主设备号,也可以让内核分配
-
定义自己的file_operations结构体
-
实现对应的drv_open/drv_read/drv_write等函数,填入file_operations结构体
-
把file_operations结构体告诉内核:register_chrdev
-
谁来注册驱动程序啊?得有一个入口函数:安装驱动程序时,就会去调用这个入口函数
-
有入口函数就应该有出口函数:卸载驱动程序时,出口函数调用unregister_chrdev
-
其他完善:提供设备信息,自动创建设备节点:class_create, device_create
这样子有个小问题,就是有点浪费资源了,因为这种一般是只需要提供一个主设备号的,如果给0就是让内核给你找一个空闲的位置,把你的fileopration结构体插进去,那么也就意味着,只要主设备号相同,那么对应的就是同一个驱动程序,比如你实现了次设备号为0的驱动程序,那么剩下的254个次设备号的就不能用的,所以我们引入了新的注册方法:
新的注册方法:
-
注册字符设备区域
-
有主设备号:register_chrdev_region
-
无主设备号:alloc_chrdev_region
-
-
分配/设置/注册cdev
-
cdev_alloc
-
cdev_init
-
cdev_add
-
那么就讲完了,也比较轻松写意的,我们搞这么多,其实都为了后面去讲串口的TTY架构做铺垫的