 edf5ca5dbe
			
		
	
	
		edf5ca5dbe
		
	
	
	
	
		
			
			PCIDeviceClass and PCIDevice are defined in pci.h. Many users of the header don't actually need them. Similar structs live in their own headers: PCIBusClass and PCIBus in pci_bus.h, PCIBridge in pci_bridge.h, PCIHostBridgeClass and PCIHostState in pci_host.h, PCIExpressHost in pcie_host.h, and PCIERootPortClass, PCIEPort, and PCIESlot in pcie_port.h. Move PCIDeviceClass and PCIDeviceClass to new pci_device.h, along with the code that needs them. Adjust include directives. This also enables the next commit. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20221222100330.380143-6-armbru@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * IO Hub for remote device
 | |
|  *
 | |
|  * Copyright © 2018, 2021 Oracle and/or its affiliates.
 | |
|  *
 | |
|  * 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 REMOTE_IOHUB_H
 | |
| #define REMOTE_IOHUB_H
 | |
| 
 | |
| #include "hw/pci/pci_device.h"
 | |
| #include "qemu/event_notifier.h"
 | |
| #include "qemu/thread-posix.h"
 | |
| #include "hw/remote/mpqemu-link.h"
 | |
| 
 | |
| #define REMOTE_IOHUB_NB_PIRQS    PCI_DEVFN_MAX
 | |
| 
 | |
| typedef struct ResampleToken {
 | |
|     void *iohub;
 | |
|     int pirq;
 | |
| } ResampleToken;
 | |
| 
 | |
| typedef struct RemoteIOHubState {
 | |
|     PCIDevice d;
 | |
|     EventNotifier irqfds[REMOTE_IOHUB_NB_PIRQS];
 | |
|     EventNotifier resamplefds[REMOTE_IOHUB_NB_PIRQS];
 | |
|     unsigned int irq_level[REMOTE_IOHUB_NB_PIRQS];
 | |
|     ResampleToken token[REMOTE_IOHUB_NB_PIRQS];
 | |
|     QemuMutex irq_level_lock[REMOTE_IOHUB_NB_PIRQS];
 | |
| } RemoteIOHubState;
 | |
| 
 | |
| int remote_iohub_map_irq(PCIDevice *pci_dev, int intx);
 | |
| void remote_iohub_set_irq(void *opaque, int pirq, int level);
 | |
| void process_set_irqfd_msg(PCIDevice *pci_dev, MPQemuMsg *msg);
 | |
| 
 | |
| void remote_iohub_init(RemoteIOHubState *iohub);
 | |
| void remote_iohub_finalize(RemoteIOHubState *iohub);
 | |
| 
 | |
| #endif
 |