#pragma once typedef uint64_t pciaddr_t; struct pci_mem_region { void *memory; pciaddr_t bus_addr; pciaddr_t base_addr; pciaddr_t size; unsigned is_IO:1; unsigned is_prefetchable:1; unsigned is_64:1; }; struct pci_device { uint16_t domain; uint8_t bus; uint8_t dev; uint8_t func; uint16_t vendor_id; uint16_t device_id; uint16_t subvendor_id; uint16_t subdevice_id; uint32_t device_class; uint8_t revision; struct pci_mem_region regions[6]; pciaddr_t rom_size; int irq; intptr_t user_data; int vgaarb_rsrc; };