ACPI: pci_link: simplify list of link devices
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Tue, 17 Feb 2009 21:00:55 +0000 (14:00 -0700)
committerLen Brown <len.brown@intel.com>
Tue, 17 Mar 2009 05:53:29 +0000 (01:53 -0400)
We don't need a struct containing a count and a list_head; a simple
list_head is sufficient.  The list iterators handle empty lists
fine.

Furthermore, we don't need to check for null list entries because we
only add non-null entries.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/pci_link.c

index dd9ebb9fda4224e9413916984afa82d74dcebdd9..16e0f9d3d17cb49a25cf76f68e04ff9042ece566 100644 (file)
@@ -86,16 +86,13 @@ struct acpi_pci_link_irq {
 };
 
 struct acpi_pci_link {
-       struct list_head                node;
+       struct list_head                list;
        struct acpi_device              *device;
        struct acpi_pci_link_irq        irq;
        int                             refcnt;
 };
 
-static struct {
-       int                     count;
-       struct list_head        entries;
-} acpi_link;
+static LIST_HEAD(acpi_link_list);
 static DEFINE_MUTEX(acpi_link_lock);
 
 /* --------------------------------------------------------------------------
@@ -479,19 +476,13 @@ static int acpi_irq_penalty[ACPI_MAX_IRQS] = {
 
 int __init acpi_irq_penalty_init(void)
 {
-       struct list_head *node;
        struct acpi_pci_link *link;
        int i;
 
        /*
         * Update penalties to facilitate IRQ balancing.
         */
-       list_for_each(node, &acpi_link.entries) {
-               link = list_entry(node, struct acpi_pci_link, node);
-               if (!link) {
-                       printk(KERN_ERR PREFIX "Invalid link context\n");
-                       continue;
-               }
+       list_for_each_entry(link, &acpi_link_list, list) {
 
                /*
                 * reflect the possible and active irqs in the penalty table --
@@ -743,9 +734,7 @@ static int acpi_pci_link_add(struct acpi_device *device)
 
        printk("\n");
 
-       /* TBD: Acquire/release lock */
-       list_add_tail(&link->node, &acpi_link.entries);
-       acpi_link.count++;
+       list_add_tail(&link->list, &acpi_link_list);
 
       end:
        /* disable all links -- to be activated on use */
@@ -768,15 +757,9 @@ static int acpi_pci_link_resume(struct acpi_pci_link *link)
 
 static int irqrouter_resume(struct sys_device *dev)
 {
-       struct list_head *node;
        struct acpi_pci_link *link;
 
-       list_for_each(node, &acpi_link.entries) {
-               link = list_entry(node, struct acpi_pci_link, node);
-               if (!link) {
-                       printk(KERN_ERR PREFIX "Invalid link context\n");
-                       continue;
-               }
+       list_for_each_entry(link, &acpi_link_list, list) {
                acpi_pci_link_resume(link);
        }
        return 0;
@@ -789,7 +772,7 @@ static int acpi_pci_link_remove(struct acpi_device *device, int type)
        link = acpi_driver_data(device);
 
        mutex_lock(&acpi_link_lock);
-       list_del(&link->node);
+       list_del(&link->list);
        mutex_unlock(&acpi_link_lock);
 
        kfree(link);
@@ -926,9 +909,6 @@ static int __init acpi_pci_link_init(void)
                        acpi_irq_balance = 0;
        }
 
-       acpi_link.count = 0;
-       INIT_LIST_HEAD(&acpi_link.entries);
-
        if (acpi_bus_register_driver(&acpi_pci_link_driver) < 0)
                return -ENODEV;
 
This page took 0.0312 seconds and 5 git commands to generate.