+pci_bind_driver(struct pci_registry* reg);
+
+
+static inline unsigned int
+pci_device_vendor(struct pci_probe* probe)
+{
+ return PCI_DEV_VENDOR(probe->device_info);
+}
+
+static inline unsigned int
+pci_device_devid(struct pci_probe* probe)
+{
+ return PCI_DEV_DEVID(probe->device_info);
+}
+
+static inline unsigned int
+pci_device_class(struct pci_probe* probe)
+{
+ return PCI_DEV_CLASS(probe->class_info);
+}
+
+static inline struct pci_base_addr*
+pci_device_bar(struct pci_probe* probe, int index)
+{
+ return &probe->bar[index];
+}
+
+static inline void
+pci_cmd_set_mmio(pci_reg_t* cmd)
+{
+ *cmd |= PCI_RCMD_MM_ACCESS;
+}
+
+static inline ptr_t
+pci_requester_id(struct pci_probe* probe)
+{
+ return probe->loc;
+}
+
+static inline void
+pci_cmd_set_pmio(pci_reg_t* cmd)
+{
+ *cmd |= PCI_RCMD_IO_ACCESS;
+}
+
+static inline void
+pci_cmd_set_msi(pci_reg_t* cmd)
+{
+ *cmd |= PCI_RCMD_DISABLE_INTR;
+}
+
+static inline void
+pci_cmd_set_bus_master(pci_reg_t* cmd)
+{
+ *cmd |= PCI_RCMD_BUS_MASTER;
+}
+
+static inline void
+pci_cmd_set_fast_b2b(pci_reg_t* cmd)
+{
+ *cmd |= PCI_RCMD_FAST_B2B;
+}
+
+static inline bool
+pci_bar_mmio_space(struct pci_base_addr* bar)
+{
+ return (bar->type & BAR_TYPE_MMIO);
+}
+
+static inline bool
+pci_capability_msi(struct pci_probe* probe)
+{
+ return !!probe->msi_loc;
+}
+
+static inline int
+pci_intr_irq(struct pci_probe* probe)
+{
+ return PCI_INTR_IRQ(probe->intr_info);
+}