[PATCH] klist: fix klist to have the same klist_add semantics as list_head
at the moment, the list_head semantics are list_add(node, head) whereas current klist semantics are klist_add(head, node) This is bound to cause confusion, and since klist is the newcomer, it should follow the list_head semantics. I also added missing include guards to klist.h Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
fef6ec8dd9
commit
d856f1e337
5 changed files with 14 additions and 10 deletions
|
@ -360,7 +360,7 @@ int bus_add_device(struct device * dev)
|
||||||
if (bus) {
|
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);
|
||||||
device_attach(dev);
|
device_attach(dev);
|
||||||
klist_add_tail(&bus->klist_devices, &dev->knode_bus);
|
klist_add_tail(&dev->knode_bus, &bus->klist_devices);
|
||||||
error = device_add_attrs(bus, dev);
|
error = device_add_attrs(bus, dev);
|
||||||
if (!error) {
|
if (!error) {
|
||||||
sysfs_create_link(&bus->devices.kobj, &dev->kobj, dev->bus_id);
|
sysfs_create_link(&bus->devices.kobj, &dev->kobj, dev->bus_id);
|
||||||
|
@ -448,7 +448,7 @@ int bus_add_driver(struct device_driver * drv)
|
||||||
}
|
}
|
||||||
|
|
||||||
driver_attach(drv);
|
driver_attach(drv);
|
||||||
klist_add_tail(&bus->klist_drivers, &drv->knode_bus);
|
klist_add_tail(&drv->knode_bus, &bus->klist_drivers);
|
||||||
module_add_driver(drv->owner, drv);
|
module_add_driver(drv->owner, drv);
|
||||||
|
|
||||||
driver_add_attrs(bus, drv);
|
driver_add_attrs(bus, drv);
|
||||||
|
|
|
@ -249,7 +249,7 @@ int device_add(struct device *dev)
|
||||||
if ((error = bus_add_device(dev)))
|
if ((error = bus_add_device(dev)))
|
||||||
goto BusError;
|
goto BusError;
|
||||||
if (parent)
|
if (parent)
|
||||||
klist_add_tail(&parent->klist_children, &dev->knode_parent);
|
klist_add_tail(&dev->knode_parent, &parent->klist_children);
|
||||||
|
|
||||||
/* notify platform of device entry */
|
/* notify platform of device entry */
|
||||||
if (platform_notify)
|
if (platform_notify)
|
||||||
|
|
|
@ -42,7 +42,7 @@ void device_bind_driver(struct device * dev)
|
||||||
{
|
{
|
||||||
pr_debug("bound device '%s' to driver '%s'\n",
|
pr_debug("bound device '%s' to driver '%s'\n",
|
||||||
dev->bus_id, dev->driver->name);
|
dev->bus_id, dev->driver->name);
|
||||||
klist_add_tail(&dev->driver->klist_devices, &dev->knode_driver);
|
klist_add_tail(&dev->knode_driver, &dev->driver->klist_devices);
|
||||||
sysfs_create_link(&dev->driver->kobj, &dev->kobj,
|
sysfs_create_link(&dev->driver->kobj, &dev->kobj,
|
||||||
kobject_name(&dev->kobj));
|
kobject_name(&dev->kobj));
|
||||||
sysfs_create_link(&dev->kobj, &dev->driver->kobj, "driver");
|
sysfs_create_link(&dev->kobj, &dev->driver->kobj, "driver");
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
* This file is rleased under the GPL v2.
|
* This file is rleased under the GPL v2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _LINUX_KLIST_H
|
||||||
|
#define _LINUX_KLIST_H
|
||||||
|
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/completion.h>
|
#include <linux/completion.h>
|
||||||
#include <linux/kref.h>
|
#include <linux/kref.h>
|
||||||
|
@ -31,8 +34,8 @@ struct klist_node {
|
||||||
struct completion n_removed;
|
struct completion n_removed;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void klist_add_tail(struct klist * k, struct klist_node * n);
|
extern void klist_add_tail(struct klist_node * n, struct klist * k);
|
||||||
extern void klist_add_head(struct klist * k, struct klist_node * n);
|
extern void klist_add_head(struct klist_node * n, struct klist * k);
|
||||||
|
|
||||||
extern void klist_del(struct klist_node * n);
|
extern void klist_del(struct klist_node * n);
|
||||||
extern void klist_remove(struct klist_node * n);
|
extern void klist_remove(struct klist_node * n);
|
||||||
|
@ -53,3 +56,4 @@ extern void klist_iter_init_node(struct klist * k, struct klist_iter * i,
|
||||||
extern void klist_iter_exit(struct klist_iter * i);
|
extern void klist_iter_exit(struct klist_iter * i);
|
||||||
extern struct klist_node * klist_next(struct klist_iter * i);
|
extern struct klist_node * klist_next(struct klist_iter * i);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -79,11 +79,11 @@ static void klist_node_init(struct klist * k, struct klist_node * n)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* klist_add_head - Initialize a klist_node and add it to front.
|
* klist_add_head - Initialize a klist_node and add it to front.
|
||||||
* @k: klist it's going on.
|
|
||||||
* @n: node we're adding.
|
* @n: node we're adding.
|
||||||
|
* @k: klist it's going on.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void klist_add_head(struct klist * k, struct klist_node * n)
|
void klist_add_head(struct klist_node * n, struct klist * k)
|
||||||
{
|
{
|
||||||
klist_node_init(k, n);
|
klist_node_init(k, n);
|
||||||
add_head(k, n);
|
add_head(k, n);
|
||||||
|
@ -94,11 +94,11 @@ EXPORT_SYMBOL_GPL(klist_add_head);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* klist_add_tail - Initialize a klist_node and add it to back.
|
* klist_add_tail - Initialize a klist_node and add it to back.
|
||||||
* @k: klist it's going on.
|
|
||||||
* @n: node we're adding.
|
* @n: node we're adding.
|
||||||
|
* @k: klist it's going on.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void klist_add_tail(struct klist * k, struct klist_node * n)
|
void klist_add_tail(struct klist_node * n, struct klist * k)
|
||||||
{
|
{
|
||||||
klist_node_init(k, n);
|
klist_node_init(k, n);
|
||||||
add_tail(k, n);
|
add_tail(k, n);
|
||||||
|
|
Loading…
Reference in a new issue