qemu/include/hw/remote/proxy.h
<<
>>
Prefs
   1/*
   2 * Copyright © 2018, 2021 Oracle and/or its affiliates.
   3 *
   4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   5 * See the COPYING file in the top-level directory.
   6 *
   7 */
   8
   9#ifndef PROXY_H
  10#define PROXY_H
  11
  12#include "hw/pci/pci.h"
  13#include "io/channel.h"
  14#include "hw/remote/proxy-memory-listener.h"
  15#include "qemu/event_notifier.h"
  16
  17#define TYPE_PCI_PROXY_DEV "x-pci-proxy-dev"
  18OBJECT_DECLARE_SIMPLE_TYPE(PCIProxyDev, PCI_PROXY_DEV)
  19
  20typedef struct ProxyMemoryRegion {
  21    PCIProxyDev *dev;
  22    MemoryRegion mr;
  23    bool memory;
  24    bool present;
  25    uint8_t type;
  26} ProxyMemoryRegion;
  27
  28struct PCIProxyDev {
  29    PCIDevice parent_dev;
  30    char *fd;
  31
  32    /*
  33     * Mutex used to protect the QIOChannel fd from
  34     * the concurrent access by the VCPUs since proxy
  35     * blocks while awaiting for the replies from the
  36     * process remote.
  37     */
  38    QemuMutex io_mutex;
  39    QIOChannel *ioc;
  40    Error *migration_blocker;
  41    ProxyMemoryListener proxy_listener;
  42    int virq;
  43    EventNotifier intr;
  44    EventNotifier resample;
  45    ProxyMemoryRegion region[PCI_NUM_REGIONS];
  46};
  47
  48#endif /* PROXY_H */
  49