Patchwork [V6,30/32] pci: factor out pci_for_each_device().

login
register
mail settings
Submitter Isaku Yamahata
Date Oct. 30, 2009, 12:21 p.m.
Message ID <1256905286-25435-31-git-send-email-yamahata@valinux.co.jp>
Download mbox | patch
Permalink /patch/37305/
State New
Headers show

Comments

Isaku Yamahata - Oct. 30, 2009, 12:21 p.m.
split out device iteration logic from pci_for_each_device().
factored out function, pci_for_each_device_under_bus() will be used later.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
 hw/pci.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)
Michael S. Tsirkin - Nov. 3, 2009, 2:29 p.m.
On Fri, Oct 30, 2009 at 09:21:24PM +0900, Isaku Yamahata wrote:
> split out device iteration logic from pci_for_each_device().
> factored out function, pci_for_each_device_under_bus() will be used later.
> 
> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
> ---
>  hw/pci.c |   21 ++++++++++++++-------
>  1 files changed, 14 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/pci.c b/hw/pci.c
> index b43f6c6..d565f6e 100644
> --- a/hw/pci.c
> +++ b/hw/pci.c
> @@ -885,19 +885,26 @@ static void pci_info_device(PCIBus *bus, PCIDevice *d)
>      }
>  }
>  
> -void pci_for_each_device(PCIBus *bus, int bus_num,
> -                         void (*fn)(PCIBus *b, PCIDevice *d))
> +static void pci_for_each_device_under_bus(PCIBus *bus,
> +                                          void (*fn)(PCIBus *b, PCIDevice *d))
>  {
>      PCIDevice *d;
>      int devfn;
>  
> +    for(devfn = 0; devfn < 256; devfn++) {

256 -> ARRAY_SIZE(bus->devices)

> +        d = bus->devices[devfn];
> +        if (d)
> +            fn(bus, d);
> +    }
> +}
> +
> +void pci_for_each_device(PCIBus *bus, int bus_num,
> +                         void (*fn)(PCIBus *b, PCIDevice *d))
> +{
>      bus = pci_find_bus(bus, bus_num);
> +
>      if (bus) {
> -        for(devfn = 0; devfn < 256; devfn++) {
> -            d = bus->devices[devfn];
> -            if (d)
> -                fn(bus, d);
> -        }
> +        pci_for_each_device_under_bus(bus, fn);
>      }
>  }
>  
> -- 
> 1.6.0.2

Patch

diff --git a/hw/pci.c b/hw/pci.c
index b43f6c6..d565f6e 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -885,19 +885,26 @@  static void pci_info_device(PCIBus *bus, PCIDevice *d)
     }
 }
 
-void pci_for_each_device(PCIBus *bus, int bus_num,
-                         void (*fn)(PCIBus *b, PCIDevice *d))
+static void pci_for_each_device_under_bus(PCIBus *bus,
+                                          void (*fn)(PCIBus *b, PCIDevice *d))
 {
     PCIDevice *d;
     int devfn;
 
+    for(devfn = 0; devfn < 256; devfn++) {
+        d = bus->devices[devfn];
+        if (d)
+            fn(bus, d);
+    }
+}
+
+void pci_for_each_device(PCIBus *bus, int bus_num,
+                         void (*fn)(PCIBus *b, PCIDevice *d))
+{
     bus = pci_find_bus(bus, bus_num);
+
     if (bus) {
-        for(devfn = 0; devfn < 256; devfn++) {
-            d = bus->devices[devfn];
-            if (d)
-                fn(bus, d);
-        }
+        pci_for_each_device_under_bus(bus, fn);
     }
 }