]> err.no Git - linux-2.6/blobdiff - drivers/base/bus.c
Driver core: change sysdev classes to use dynamic kobject names
[linux-2.6] / drivers / base / bus.c
index aa0c986c323a01ccfaadfe51e0772e21ef8498ab..a377b65ba328066091d2171e12ed81b60b61f13f 100644 (file)
@@ -80,7 +80,7 @@ static void driver_release(struct kobject *kobj)
 {
        struct driver_private *drv_priv = to_driver(kobj);
 
-       pr_debug("%s: freeing %s\n", __FUNCTION__, kobject_name(kobj));
+       pr_debug("driver: '%s': %s\n", kobject_name(kobj), __FUNCTION__);
        kfree(drv_priv);
 }
 
@@ -446,7 +446,7 @@ int bus_add_device(struct device * dev)
        int error = 0;
 
        if (bus) {
-               pr_debug("bus %s: add device %s\n", bus->name, dev->bus_id);
+               pr_debug("bus: '%s': add device %s\n", bus->name, dev->bus_id);
                error = device_add_attrs(bus, dev);
                if (error)
                        goto out_put;
@@ -519,7 +519,7 @@ void bus_remove_device(struct device * dev)
                        dev->is_registered = 0;
                        klist_del(&dev->knode_bus);
                }
-               pr_debug("bus %s: remove device %s\n", dev->bus->name, dev->bus_id);
+               pr_debug("bus: '%s': remove device %s\n", dev->bus->name, dev->bus_id);
                device_release_driver(dev);
                bus_put(dev->bus);
        }
@@ -637,21 +637,18 @@ int bus_add_driver(struct device_driver *drv)
        if (!bus)
                return -EINVAL;
 
-       pr_debug("bus %s: add driver %s\n", bus->name, drv->name);
+       pr_debug("bus: '%s': add driver %s\n", bus->name, drv->name);
 
        priv = kzalloc(sizeof(*priv), GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
 
-       error = kobject_set_name(&priv->kobj, "%s", drv->name);
-       if (error)
-               goto out_put_bus;
-       priv->kobj.kset = bus->p->drivers_kset;
-       priv->kobj.ktype = &driver_ktype;
        klist_init(&priv->klist_devices, NULL, NULL);
        priv->driver = drv;
        drv->p = priv;
-       error = kobject_register(&priv->kobj);
+       priv->kobj.kset = bus->p->drivers_kset;
+       error = kobject_init_and_add(&priv->kobj, &driver_ktype, NULL,
+                                    "%s", drv->name);
        if (error)
                goto out_put_bus;
 
@@ -681,9 +678,10 @@ int bus_add_driver(struct device_driver *drv)
                        __FUNCTION__, drv->name);
        }
 
+       kobject_uevent(&priv->kobj, KOBJ_ADD);
        return error;
 out_unregister:
-       kobject_unregister(&priv->kobj);
+       kobject_put(&priv->kobj);
 out_put_bus:
        bus_put(bus);
        return error;
@@ -707,10 +705,10 @@ void bus_remove_driver(struct device_driver * drv)
        driver_remove_attrs(drv->bus, drv);
        driver_remove_file(drv, &driver_attr_uevent);
        klist_remove(&drv->p->knode_bus);
-       pr_debug("bus %s: remove driver %s\n", drv->bus->name, drv->name);
+       pr_debug("bus: '%s': remove driver %s\n", drv->bus->name, drv->name);
        driver_detach(drv);
        module_remove_driver(drv);
-       kobject_unregister(&drv->p->kobj);
+       kobject_put(&drv->p->kobj);
        bus_put(drv->bus);
 }
 
@@ -907,7 +905,7 @@ int bus_register(struct bus_type * bus)
        if (retval)
                goto bus_attrs_fail;
 
-       pr_debug("bus type '%s' registered\n", bus->name);
+       pr_debug("bus: '%s': registered\n", bus->name);
        return 0;
 
 bus_attrs_fail:
@@ -934,7 +932,7 @@ out:
  */
 void bus_unregister(struct bus_type * bus)
 {
-       pr_debug("bus %s: unregistering\n", bus->name);
+       pr_debug("bus: '%s': unregistering\n", bus->name);
        bus_remove_attrs(bus);
        remove_probe_files(bus);
        kset_unregister(bus->p->drivers_kset);