void device_initialize(struct device *dev)
{
dev->kobj.kset = devices_kset;
- kobject_init_ng(&dev->kobj, &device_ktype);
+ kobject_init(&dev->kobj, &device_ktype);
klist_init(&dev->klist_children, klist_children_get,
klist_children_put);
INIT_LIST_HEAD(&dev->dma_pools);
/*
* If we have no parent, we live in "virtual".
- * Class-devices with a bus-device as parent, live
- * in a class-directory to prevent namespace collisions.
+ * Class-devices with a non class-device as parent, live
+ * in a "glue" directory to prevent namespace collisions.
*/
if (parent == NULL)
parent_kobj = virtual_device_parent(dev);
if (!k)
return NULL;
k->kset = &dev->class->class_dirs;
- retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name);
+ retval = kobject_add(k, parent_kobj, "%s", dev->class->name);
if (retval < 0) {
kobject_put(k);
return NULL;
}
- /* Do not emit a uevent, as it's not needed for this
- * "class glue" directory. */
+ /* do not emit an uevent for this simple "glue" directory */
return k;
}
static void cleanup_device_parent(struct device *dev)
{
- struct device *d;
- int other = 0;
+ struct kobject *glue_dir = dev->kobj.parent;
- if (!dev->class)
- return;
-
- /* see if we live in a parent class directory */
- if (dev->kobj.parent->kset != &dev->class->class_dirs)
+ /* see if we live in a "glue" directory */
+ if (!dev->class || glue_dir->kset != &dev->class->class_dirs)
return;
- /* if we are the last child of our class, delete the directory */
- down(&dev->class->sem);
- list_for_each_entry(d, &dev->class->devices, node) {
- if (d == dev)
- continue;
- if (d->kobj.parent == dev->kobj.parent) {
- other = 1;
- break;
- }
- }
- if (!other)
- kobject_del(dev->kobj.parent);
- kobject_put(dev->kobj.parent);
- up(&dev->class->sem);
+ kobject_put(glue_dir);
}
#endif
* This is part 2 of device_register(), though may be called
* separately _iff_ device_initialize() has been called separately.
*
- * This adds it to the kobject hierarchy via kobject_add_ng(), adds it
+ * This adds it to the kobject hierarchy via kobject_add(), adds it
* to the global and sibling lists for the device, then
* adds it to the other relevant subsystems of the driver model.
*/
goto Error;
/* first, register with generic layer. */
- error = kobject_add_ng(&dev->kobj, dev->kobj.parent, "%s", dev->bus_id);
+ error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev->bus_id);
if (error)
goto Error;