summaryrefslogtreecommitdiffstats
path: root/drivers/base/core.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman2007-11-27 07:11:55 +0100
committerGreg Kroah-Hartman2008-01-25 05:40:25 +0100
commit37b0c020343080241984d978981d6caf877b278a (patch)
tree6a602f153ac0713cdecd4f8b355844387fba90bf /drivers/base/core.c
parentdriver core: clean up shutdown.c (diff)
downloadkernel-qcow2-linux-37b0c020343080241984d978981d6caf877b278a.tar.gz
kernel-qcow2-linux-37b0c020343080241984d978981d6caf877b278a.tar.xz
kernel-qcow2-linux-37b0c020343080241984d978981d6caf877b278a.zip
driver core: clean up device_shutdown
device_shutdown does not need to be in a separate file. Move it into the driver core file where it belongs. This also moves us one more step closer to making devices_kset static, now only the crazy sysdevs are keeping that from happening... Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r--drivers/base/core.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index d2de2d59af42..b3a931fe6b16 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1415,5 +1415,23 @@ out:
put_device(dev);
return error;
}
-
EXPORT_SYMBOL_GPL(device_move);
+
+/**
+ * device_shutdown - call ->shutdown() on each device to shutdown.
+ */
+void device_shutdown(void)
+{
+ struct device * dev, *devn;
+
+ list_for_each_entry_safe_reverse(dev, devn, &devices_kset->list,
+ kobj.entry) {
+ if (dev->bus && dev->bus->shutdown) {
+ dev_dbg(dev, "shutdown\n");
+ dev->bus->shutdown(dev);
+ } else if (dev->driver && dev->driver->shutdown) {
+ dev_dbg(dev, "shutdown\n");
+ dev->driver->shutdown(dev);
+ }
+ }
+}