分析mtk_disp_mgr.c(引出一个典型的字符设备的创建过程)
来源:互联网 发布:iconkit for mac 编辑:程序博客网 时间:2024/06/11 23:29
一. 在该模块的probe函数中,有如下代码:
static dev_t mtk_disp_mgr_devno;static struct cdev *mtk_disp_mgr_cdev;static struct class *mtk_disp_mgr_class;static const struct file_operations mtk_disp_mgr_fops = { .owner = THIS_MODULE, .mmap = mtk_disp_mgr_mmap, .unlocked_ioctl = mtk_disp_mgr_ioctl, .open = mtk_disp_mgr_open, .release = mtk_disp_mgr_release, .read = mtk_disp_mgr_read,};static int mtk_disp_mgr_probe(struct platform_device *pdev){struct class_device;struct class_device *class_dev = NULL;int i;if (alloc_chrdev_region(&mtk_disp_mgr_devno, 0, 1, DISP_SESSION_DEVICE))return -EFAULT;/* alloc_chrdev_region 动态分配字符设备的编号 */mtk_disp_mgr_cdev = cdev_alloc();/*cdev_alloc 初始化 cdev。(已经定义了cdev指针static struct cdev *mtk_disp_mgr_cdev)。如果定义的是结构体 static struct cdev mtk_disp_mgr_cdev,则使用 cdev_init 函数。这2个函数的区别在于,cdev_alloc会调用kzalloc来分配内存,所有只定义了一个cdev指针时使用该函数。cdev_init() 多赋了一个 cdev->ops 的值。*/mtk_disp_mgr_cdev->owner = THIS_MODULE;mtk_disp_mgr_cdev->ops = &mtk_disp_mgr_fops;if (cdev_add(mtk_disp_mgr_cdev, mtk_disp_mgr_devno, 1)) /* 添加cdev结构 */{cdev_del(mtk_disp_mgr_cdev);unregister_chrdev_region(mtk_disp_mgr_devno, 1);return -EFAULT;}mtk_disp_mgr_class = class_create(THIS_MODULE, DISP_SESSION_DEVICE);/* class_create 会在 /sysfs 下创建一个 class ,名称为 DISP_SESSION_DEVICE*/class_dev = (struct class_device *)device_create(mtk_disp_mgr_class, NULL, mtk_disp_mgr_devno, NULL, DISP_SESSION_DEVICE);/* class_dev 会在 /dev 目录下创建一个名为 DISP_SESSION_DEVICE的设备节点。在早期的内核版本中,使用的是class_device_create函数。还可以使用device_create_file来设置属性,可以在/sys/class/目录下实现控制*/return 0;}
二. 以上就是一个典型的字符设备cdev驱动的注册过程
阅读全文
0 0
- 分析mtk_disp_mgr.c(引出一个典型的字符设备的创建过程)
- 学习笔记:创建一个简单字符设备驱动的过程
- 分析MTK leds驱动(引出 sysfs 的创建过程)
- 一个典型的字符设备驱动,带平台设备与驱动注册
- 一个典型代码的分析
- linux0.11字符设备的读写过程分析
- 字符设备文件的创建
- 深度剖析一个典型的C/C++程序的编译、链接以及执行的过程
- 一个典型的事务使用错误分析
- 一个ContentProvider的典型结构分析
- 一个典型的Java程序分析
- 一个C笔试题引出一系列的问题
- 一个C笔试题引出一系列的问题
- 代码:编写一个简单的字符设备驱动(自动创建设备文件)
- 代码:编写一个简单的字符设备驱动——创建多个同类型设备
- 一个典型的C程序存储空间布局
- 【C++】智能指针的一个典型应用
- PhotoCamera引出的一个问题
- idea导入maven项目和普通Web项目,并且使用tomcat部署
- vue踩坑系列——backgroundImage路径问题
- HTK在Windows7.32位系统下的安装及注意事项
- Make输出重定向
- oracle 安装 must be configured to display at least 256 colors 问题
- 分析mtk_disp_mgr.c(引出一个典型的字符设备的创建过程)
- Python3-scipy
- 地理定位
- 【面向JS--数组】
- UVa 12657 Boxes in a Line解析代码
- 百度JS模板引擎
- react学习日志2
- 当图变成了一棵树(纠结的生成树)
- #define PINT int* typedef int *SINT