1、自动创建设备节点
//这是函数所需得头文件
#include <linux/device.h>
struct class *cls;
//创建class结构体
cls = class_create(owner, name)
功能:向用户空间提交目录信息
参数:
@owner :THIS_MODULE
@name :目录名字
返回值:成功返回struct class *指针
失败返回错误码指针 int (-5)
struct device *device_create(struct class *class, struct device *parent,dev_t devt, void *drvdata, const char *fmt, …)
dev_t = MKDEV(major,minor)
major = MAJOR(dev_t); /可以获取主设备号
minor = MINOR(dev_t); //可以获取此设备号
struct class *cls;
int i;
const count = 3; //定义你要创建多少的节点(inode)
cls = class_create(THIS_MODULE,CDEVNAME);//class得创建
if(IS_ERR(cls)){//返回值得判断
printk("class create error\n");
return PTR_ERR(cls);
}
dev = device_create(cls,NULL,MKDEV(major,0),NULL,"mycdev");//device的创建
if(IS_ERR(dev)){//返回值的判断
printk("device create error\n");
return PTR_ERR(dev); //返回一个宏
}
//如果你要一次性创建多个次设备号你也得创建搓个节点,可以用否循环来创建
for(i=0; i<count; i++){
ev = device_create(cls,NULL,MKDEV(major,i),NULL,"mycdev%d",i);
if(IS_ERR(dev)){
rintk("device%d create error\n",i);
return PTR_ERR(dev);
}
//释放结构体
//void class_destroy(struct class *cls)
//void device_destroy(struct class *class, dev_t devt)