| /* |
| * libqos Generic PCI bindings and generic pci host bridge |
| * |
| * Copyright Red Hat Inc., 2022 |
| * |
| * Authors: |
| * Eric Auger <eric.auger@redhat.com> |
| * |
| * 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 |