qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

iohub.h (1150B)


      1 /*
      2  * IO Hub for remote device
      3  *
      4  * Copyright © 2018, 2021 Oracle and/or its affiliates.
      5  *
      6  * This work is licensed under the terms of the GNU GPL, version 2 or later.
      7  * See the COPYING file in the top-level directory.
      8  *
      9  */
     10 
     11 #ifndef REMOTE_IOHUB_H
     12 #define REMOTE_IOHUB_H
     13 
     14 #include "hw/pci/pci.h"
     15 #include "qemu/event_notifier.h"
     16 #include "qemu/thread-posix.h"
     17 #include "hw/remote/mpqemu-link.h"
     18 
     19 #define REMOTE_IOHUB_NB_PIRQS    PCI_DEVFN_MAX
     20 
     21 typedef struct ResampleToken {
     22     void *iohub;
     23     int pirq;
     24 } ResampleToken;
     25 
     26 typedef struct RemoteIOHubState {
     27     PCIDevice d;
     28     EventNotifier irqfds[REMOTE_IOHUB_NB_PIRQS];
     29     EventNotifier resamplefds[REMOTE_IOHUB_NB_PIRQS];
     30     unsigned int irq_level[REMOTE_IOHUB_NB_PIRQS];
     31     ResampleToken token[REMOTE_IOHUB_NB_PIRQS];
     32     QemuMutex irq_level_lock[REMOTE_IOHUB_NB_PIRQS];
     33 } RemoteIOHubState;
     34 
     35 int remote_iohub_map_irq(PCIDevice *pci_dev, int intx);
     36 void remote_iohub_set_irq(void *opaque, int pirq, int level);
     37 void process_set_irqfd_msg(PCIDevice *pci_dev, MPQemuMsg *msg);
     38 
     39 void remote_iohub_init(RemoteIOHubState *iohub);
     40 void remote_iohub_finalize(RemoteIOHubState *iohub);
     41 
     42 #endif