在刚开始入门设备驱动时我们写的简单驱动都是通过手动创建设备文件来测试驱动的工作状态。其实内核给我们提供了自动创建设备文件、卸载驱动时自动删除设备文件的接口。一般使用如下:
// 让内核帮我们发信息给udev,让udev自动创建和删除设备文件
led_class = class_create(THIS_MODULE, "led_class");
if (IS_ERR(led_class))
return -EINVAL;
//在/dev目录下创建的设备文件的名字 /dev/testled
device_create(led_class, NULL, mydev, NULL, "testled");
首先class_create函数在sysfs下为我们创建一个目录,然后这样就可以使用class类的uevent时间通知用户空间的udev,在调用device_create函数的时候udev就会为我们创建设备文件,在dev目录下的表现形式就是 /dev/testled
这样就省去了手动创建设备文件的麻烦拉。在驱动卸载函数中我们需要删除创建的class类
device_destroy(led_class, mydev);
class_destroy(led_class);