字符设备驱动
- 初始化时首先向内核申请主、次设备号,包括动态分配或者静态分配,
register_chrdev_region()
- 对设备需要使用的资源进行分配以及初始化,比如内存、同步原语等;
- 初始化
cdev结构,将包含open、release、read、write等函数的file_operation结构赋值给cdev->dev, 然后使用函数cdev_add()函数向系统注册字符设备,此时完成字符设备与设备号、操作函数的关联;
- 但
file_operate包含的函数接口为struct inode*和/或struct file *,那怎样才能找到我们的scull_dev结构体?所以需要在open函数中通过inode结构体的i_cdev获取字符设备指针,然后利用container_of获取scull_dev结构体指针,并赋值给filp->private_data,这样, 我们便可以在read、write、ioctl等函数中通过struct file * 获取自定义字符设备的指针,即scull_dev啦。

image

image
参考
1.字符设备驱动中cdev与inode、file_operations的关系
本文标题:字符设备驱动
本文链接:https://www.haomeiwen.com/subject/dphuictx.html
网友评论