// 如果设备已经连接到总线上 if (dev->bus) // 通过总线的通知器调用所有注册的添加设备通知回调函数 blocking_notifier_call_chain(&dev->bus->p->bus_notifier, BUS_NOTIFY_ADD_DEVICE, dev);

// 发送一个内核对象事件,通知用户空间设备已经添加 kobject_uevent(&dev->kobj, KOBJ_ADD);

// 调用总线的探测设备函数,以便总线能够检测到新添加的设备 bus_probe_device(dev);

// 如果设备有父设备 if (parent) // 将设备添加到父设备的子设备列表中 klist_add_tail(&dev->p->knode_parent, &parent->p->klist_children);

// 如果设备有设备类 if (dev->class) { // 锁定设备类的互斥锁 mutex_lock(&dev->class->p->mutex);

// 将设备添加到设备类的设备列表中
klist_add_tail(&dev->p->knode_class,
		   &dev->class->p->klist_devices);

// 通知任何设备类接口,设备已经添加
list_for_each_entry(class_intf,
		    &dev->class->p->interfaces, node)
	if (class_intf->add_dev)
		class_intf->add_dev(dev, class_intf);

// 解锁设备类的互斥锁
mutex_unlock(&dev->class->p->mutex);

}


原文地址: https://www.cveoy.top/t/topic/mHWd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录