提交 d856f1e3 编写于 作者: J James Bottomley 提交者: Greg Kroah-Hartman

[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: NJames Bottomley <James.Bottomley@SteelEye.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 fef6ec8d
...@@ -360,7 +360,7 @@ int bus_add_device(struct device * dev) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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 { ...@@ -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, ...@@ -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) ...@@ -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); ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册