利用udev(mdev)来实现设备节点的自动创建,udev(mdev)存在于应用层。
包含头文件
#include<linux/device.h>
新建一个class结构体指针
static struct class *my_class;
在初始化函数中调用class_create()函数创建一个类,参数分别为模块所有者和class结构name字段,在/sys/class/下体现。
my_class= class_create(THIS_MODULE, "my_class");
if(IS_ERR(my_class))
{
printk("Err: failed increating class.\n");
return -1;
}
调用device_create()函数创建设备节点,参数分别为所从属类,这个设备的父设备,没有就制定NULL,设备号,设备的私有数据,最后一组参数指定设备节点名,比如这里的名为hello。函数原型:
extern struct device *device_create(struct class *cls, structdevice *parent,
dev_t devt, void *drvdata,
const char *fmt, ...)
具体实现在drivers/base/core.c中
程序中使用
device_create(my_class,NULL,dev_n,NULL,"%s","hello");
或者
device_create(my_class,NULL,dev_n,NULL,"hello");
设备卸载删除类和设备节点
device_destroy(my_class,dev_n);
class_destroy(my_class);