.设备节点文件创建函数 使用杂项字符设备注册设备驱动时,可以自动创建设备节点文件。 但是使用早期字符设备和标准字符设备注册设备节点文件时并不能自动创建设备节点文件。 猜测:杂项字符设备注册函数中,包含有设备节点文件注册的函数! 杂项字符设备注册函数分析:misc_register(); misc_register(); --> device_create(misc_class, misc->parent, dev, misc, "%s", misc->name); ...... 分析杂项字符设备注册函数,得到设备节点文件创建函数:device_create();
device_create(); 函数原型:struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...); 函数功能:根据提供的设备号,在文件系统/dev/目录下创建设备节点文件 形参列表: class:类 -- 在文件系统中用来管理设备节点文件的类 parent:当前设备的父设备 -- (无:NULL) devt:设备号 -- 创建设备节点文件所关联的设备号 drvdata:当前设备驱动的私有数据 -- 任何数据(无:NULL) const char *fmt, ... :设备节点文件名(格式化字符串传参) 返回值: 成功:当前设备的设备结构体指针 失败:错误码 删除设备节点文件:void device_destroy(struct class *class, dev_t devt);
class_create(); 函数原型:struct class* class_create(struct module *owner, const char *name); 函数功能:在文件系统中创建一个类,用来管理一类设备节点文件。 (创建目录:/sys/class/) 形参列表: owner:THIS_MODULE name:类的名称 返回值: 成功:创建出来的类的结构体指针 失败:错误码 删除类:void class_destroy(struct class *cls);
只要在早期字符设备或标准字符设备的设备驱动中,在设备注册成功之后,调用class_create()和device_create()。这样早期字符设备驱动和标准字符设备驱动也将能够自动创建设备节点文件。 补充: source insight使用技巧: ctrl + 鼠标左键 :跳转到定义处 ctrl + / :整个工程搜索某一个字符串 ctrl + f :当前文件中搜索某一个字符串