Linux Kernel设备驱动模型之总线添加设备

    xiaoxiao2021-03-25  104

    设备驱动之总线添加设备:

    /**  * bus_add_device - add device to bus  * @dev: device being added  *  * - Add device's bus attributes.  * - Create links to device's bus.  * - Add the device to its bus's list of devices.  */ int bus_add_device(struct device *dev) {  struct bus_type *bus = bus_get(dev->bus);  int error = 0;

     if (bus) {   pr_debug("bus: '%s': add device %s\n", bus->name, dev_name(dev));   error = device_add_attrs(bus, dev);   if (error)    goto out_put;   error = device_add_groups(dev, bus->dev_groups);   if (error)    goto out_id;   error = sysfs_create_link(&bus->p->devices_kset->kobj,       &dev->kobj, dev_name(dev));   if (error)    goto out_groups;   error = sysfs_create_link(&dev->kobj,     &dev->bus->p->subsys.kobj, "subsystem");   if (error)    goto out_subsys;   klist_add_tail(&dev->p->knode_bus, &bus->p->klist_devices);  }  return 0;

    out_subsys:  sysfs_remove_link(&bus->p->devices_kset->kobj, dev_name(dev)); out_groups:  device_remove_groups(dev, bus->dev_groups); out_id:  device_remove_attrs(bus, dev); out_put:  bus_put(dev->bus);  return error; }

           
    转载请注明原文地址: https://ju.6miu.com/read-15610.html

    最新回复(0)