Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b249072ee6897fe4f8d461c7bb4b926223263c28
Commit:     b249072ee6897fe4f8d461c7bb4b926223263c28
Parent:     0fed80f7a63abd7168907267af69ee31f6bcf301
Author:     Greg Kroah-Hartman <[EMAIL PROTECTED]>
AuthorDate: Thu Nov 1 19:41:16 2007 -0700
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Thu Jan 24 20:40:33 2008 -0800

    driver core: add way to get to bus device klist
    
    This allows an easier way to get to the device klist associated with a
    struct bus_type (you have three to choose from...)  This will make it
    easier to move these fields to be dynamic in a future patch.
    
    The only user of this is the PCI core which horribly abuses this
    interface to rearrange the order of the pci devices.  This should be
    done using the existing bus device walking functions, but that's left
    for future patches.
    
    Cc: Kay Sievers <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 drivers/base/bus.c     |    6 ++++++
 drivers/pci/probe.c    |   11 +++++++----
 include/linux/device.h |    1 +
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 8335a10..9c9027b 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -941,6 +941,12 @@ struct kset *bus_get_kset(struct bus_type *bus)
 }
 EXPORT_SYMBOL_GPL(bus_get_kset);
 
+struct klist *bus_get_device_klist(struct bus_type *bus)
+{
+       return &bus->klist_devices;
+}
+EXPORT_SYMBOL_GPL(bus_get_device_klist);
+
 int __init buses_init(void)
 {
        bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL);
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index c5ca313..5fd5852 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1210,16 +1210,19 @@ static void __init pci_sort_breadthfirst_klist(void)
        struct klist_node *n;
        struct device *dev;
        struct pci_dev *pdev;
+       struct klist *device_klist;
 
-       spin_lock(&pci_bus_type.klist_devices.k_lock);
-       list_for_each_safe(pos, tmp, &pci_bus_type.klist_devices.k_list) {
+       device_klist = bus_get_device_klist(&pci_bus_type);
+
+       spin_lock(&device_klist->k_lock);
+       list_for_each_safe(pos, tmp, &device_klist->k_list) {
                n = container_of(pos, struct klist_node, n_node);
                dev = container_of(n, struct device, knode_bus);
                pdev = to_pci_dev(dev);
                pci_insertion_sort_klist(pdev, &sorted_devices);
        }
-       list_splice(&sorted_devices, &pci_bus_type.klist_devices.k_list);
-       spin_unlock(&pci_bus_type.klist_devices.k_lock);
+       list_splice(&sorted_devices, &device_klist->k_list);
+       spin_unlock(&device_klist->k_lock);
 }
 
 static void __init pci_insertion_sort_devices(struct pci_dev *a, struct 
list_head *list)
diff --git a/include/linux/device.h b/include/linux/device.h
index 3cc13c3..62e695b 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -118,6 +118,7 @@ extern int bus_unregister_notifier(struct bus_type *bus,
                                                      unbound */
 
 extern struct kset *bus_get_kset(struct bus_type *bus);
+extern struct klist *bus_get_device_klist(struct bus_type *bus);
 
 struct device_driver {
        const char              * name;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to