device_create创建设备节点分析
来源:互联网 发布:国内云计算市场份额 编辑:程序博客网 时间:2024/05/17 22:09
在驱动中经常可以看到类似下面的话:
adb_dev_class = class_create(THIS_MODULE, "adb");device_create(adb_dev_class, NULL, MKDEV(ADB_MAJOR, 0), NULL, "adb");那么device_create调用什么函数创建设备节点,继续分析
struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...){va_list vargs;struct device *dev;va_start(vargs, fmt);dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs);va_end(vargs);return dev;}分析device_create_vargs函数
struct device *device_create_vargs(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, va_list args){struct device *dev = NULL;int retval = -ENODEV;if (class == NULL || IS_ERR(class))goto error;dev = kzalloc(sizeof(*dev), GFP_KERNEL);if (!dev) {retval = -ENOMEM;goto error;}dev->devt = devt;dev->class = class;dev->parent = parent;dev->release = device_create_release;dev_set_drvdata(dev, drvdata);retval = kobject_set_name_vargs(&dev->kobj, fmt, args);if (retval)goto error;retval = device_register(dev);if (retval)goto error;return dev;error:put_device(dev);return ERR_PTR(retval);}可以看到其中调用了device_register函数,有些驱动没有device_create,也是利用device_register来创建设备节点。如果继续分析device_register的话可以得出,device_register调用device_add中的kobject_add来在sys目录下创建。sys和proc一样是虚拟文件系统,在2.6之后的内核,引入的用户空间mdev机制,会根据sys下的文件来创建设备节点。
阅读全文
0 0
- device_create创建设备节点分析
- 自动创建设备节点 device_create
- 自动创建设备节点 device_create
- 关于使用 class_create,device_create,class_device_create 创建设备节点
- class_create(),class_device_create()或device_create()自动创建设备节点
- Linux下的device_create创建字符设备节点流程
- device_create device_destroy 使用==mknod及通过class_create自动创建设备节点
- device_create device_destroy 使用==mknod及通过class_create自动创建设备节点
- device_create device_destroy 使用==mknod及通过class_create自动创建设备节点
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点 .
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点
- class_create(),device_create自动创建设备文件结点
- 剑指offer第七题(裴波那契数列)
- 在CentOS中安装arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz交叉编译环境
- 线段树
- Java多线程四种创建方式
- 2018阿里校招笔试——给定一个字符串S和有效单词的字典D,请确定可以插入到S中的最小空格数,使得最终的字符串完全由D中的有效单词组成,并输出解。
- device_create创建设备节点分析
- [Leetcode]Median of Two Sorted Arrays
- 并行编程与计算平台 | NVIDIA CUDA | NVIDIA --- GPU编程
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- 食物链(poj-1182)(带权并查集)
- python安装
- Monthly Expense POJ
- JVM结构、GC工作机制详解
- mysql联合索引