/* * libqos Generic PCI bindings and generic pci host bridge * * Copyright Red Hat Inc., 2022 * * Authors: * Eric Auger * * This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. */ #ifndef LIBQOS_GENERIC_PCIHOST_H #define LIBQOS_GENERIC_PCIHOST_H #include "pci.h" #include "libqos-malloc.h" #include "qgraph.h" typedef struct QGenericPCIBus { QOSGraphObject obj; QPCIBus bus; uint64_t gpex_pio_base; uint64_t ecam_alloc_ptr; } QGenericPCIBus; /* * qpci_init_generic(): * @ret: A valid QGenericPCIBus * pointer * @qts: The %QTestState * @alloc: A previously initialized @alloc providing memory for @qts * @bool: devices can be hotplugged on this bus * * This function initializes an already allocated * QGenericPCIBus object. */ void qpci_init_generic(QGenericPCIBus *ret, QTestState *qts, QGuestAllocator *alloc, bool hotpluggable); /* QGenericPCIHost */ typedef struct QGenericPCIHost QGenericPCIHost; struct QGenericPCIHost { QOSGraphObject obj; QGenericPCIBus pci; }; QOSGraphObject *generic_pcihost_get_device(void *obj, const char *device); void qos_create_generic_pcihost(QGenericPCIHost *host, QTestState *qts, QGuestAllocator *alloc); #endif