pci: move out pci internal structures, PCIBus, PCIBridge, and pci_bus_info.

move out pci internal structures, PCIBus, PCIBridge and pci_bus_info into
private header file, pci_internals.h.
This is a preparation. Later pci bridge implementation will be
split out form pci.c into pci_bridge.c.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Isaku Yamahata 2010-07-12 19:36:40 +09:00 committed by Michael S. Tsirkin
parent d154e0bafb
commit cfb0a50a06
2 changed files with 42 additions and 30 deletions

View File

@ -23,6 +23,7 @@
*/ */
#include "hw.h" #include "hw.h"
#include "pci.h" #include "pci.h"
#include "pci_internals.h"
#include "monitor.h" #include "monitor.h"
#include "net.h" #include "net.h"
#include "sysemu.h" #include "sysemu.h"
@ -36,31 +37,10 @@
# define PCI_DPRINTF(format, ...) do { } while (0) # define PCI_DPRINTF(format, ...) do { } while (0)
#endif #endif
struct PCIBus {
BusState qbus;
int devfn_min;
pci_set_irq_fn set_irq;
pci_map_irq_fn map_irq;
pci_hotplug_fn hotplug;
DeviceState *hotplug_qdev;
void *irq_opaque;
PCIDevice *devices[256];
PCIDevice *parent_dev;
target_phys_addr_t mem_base;
QLIST_HEAD(, PCIBus) child; /* this will be replaced by qdev later */
QLIST_ENTRY(PCIBus) sibling;/* this will be replaced by qdev later */
/* The bus IRQ state is the logical OR of the connected devices.
Keep a count of the number of devices with raised IRQs. */
int nirq;
int *irq_count;
};
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent); static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
static char *pcibus_get_dev_path(DeviceState *dev); static char *pcibus_get_dev_path(DeviceState *dev);
static struct BusInfo pci_bus_info = { struct BusInfo pci_bus_info = {
.name = "PCI", .name = "PCI",
.size = sizeof(PCIBus), .size = sizeof(PCIBus),
.print_dev = pcibus_dev_print, .print_dev = pcibus_dev_print,
@ -1533,14 +1513,6 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, const char *default_model,
return res; return res;
} }
typedef struct {
PCIDevice dev;
PCIBus bus;
uint32_t vid;
uint32_t did;
} PCIBridge;
static void pci_bridge_update_mappings_fn(PCIBus *b, PCIDevice *d) static void pci_bridge_update_mappings_fn(PCIBus *b, PCIDevice *d)
{ {
pci_update_mappings(d); pci_update_mappings(d);

40
hw/pci_internals.h Normal file
View File

@ -0,0 +1,40 @@
#ifndef QEMU_PCI_INTERNALS_H
#define QEMU_PCI_INTERNALS_H
/*
* This header files is private to pci.c and pci_bridge.c
* So following structures are opaque to others and shouldn't be
* accessed.
*/
extern struct BusInfo pci_bus_info;
struct PCIBus {
BusState qbus;
int devfn_min;
pci_set_irq_fn set_irq;
pci_map_irq_fn map_irq;
pci_hotplug_fn hotplug;
DeviceState *hotplug_qdev;
void *irq_opaque;
PCIDevice *devices[256];
PCIDevice *parent_dev;
target_phys_addr_t mem_base;
QLIST_HEAD(, PCIBus) child; /* this will be replaced by qdev later */
QLIST_ENTRY(PCIBus) sibling;/* this will be replaced by qdev later */
/* The bus IRQ state is the logical OR of the connected devices.
Keep a count of the number of devices with raised IRQs. */
int nirq;
int *irq_count;
};
typedef struct {
PCIDevice dev;
PCIBus bus;
uint32_t vid;
uint32_t did;
} PCIBridge;
#endif /* QEMU_PCI_INTERNALS_H */