流程框图如下
自动创建
1 内核检测到设备插入后,会发送一个uevent事件到内核中,并提供有关硬件设备的信息。
2 udevd守护程序收到uevent事件后,创建一个设备类,(向上提交目录信息),会在内核中申请一个struct class对象,并且初始化,然后会在根目录下/dev/class下创建一个文件夹,/dev/class/类名
3.创建一个设备对象,(向上提交设备节点信息),在内核中申请一个struct device对象,并且初始化,然后会在 /dev/class/类名创建一个存放设备节点信息的文件
4.创建存放设备节点信息的文件后,系统会自动在驱动发起一个hotplug event事件,用户空间存在一个进程hotplug,hotplug会被唤醒,hotplug通知udev进程,udev会去创建的向上提交的设备节点信息目录里查询设备节点相关信息
5.udev进程在/dev下创建设备节点
实现步骤和主要函数
1.申请一个设备类并初始化,向上提交目录信息
struct class * class_create(struct module *owner,const char *name );
2.向上提交节点信息
struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...)
3.销毁目录信息
void class_destroy( struct class *cls);
4.销毁设备节点信息
void device_destroy( struct class *class, dev_t devt)