1*9f811207SElena Ufimtseva /* 2*9f811207SElena Ufimtseva * Copyright © 2018, 2021 Oracle and/or its affiliates. 3*9f811207SElena Ufimtseva * 4*9f811207SElena Ufimtseva * This work is licensed under the terms of the GNU GPL, version 2 or later. 5*9f811207SElena Ufimtseva * See the COPYING file in the top-level directory. 6*9f811207SElena Ufimtseva * 7*9f811207SElena Ufimtseva */ 8*9f811207SElena Ufimtseva 9*9f811207SElena Ufimtseva #ifndef PROXY_H 10*9f811207SElena Ufimtseva #define PROXY_H 11*9f811207SElena Ufimtseva 12*9f811207SElena Ufimtseva #include "hw/pci/pci.h" 13*9f811207SElena Ufimtseva #include "io/channel.h" 14*9f811207SElena Ufimtseva 15*9f811207SElena Ufimtseva #define TYPE_PCI_PROXY_DEV "x-pci-proxy-dev" 16*9f811207SElena Ufimtseva OBJECT_DECLARE_SIMPLE_TYPE(PCIProxyDev, PCI_PROXY_DEV) 17*9f811207SElena Ufimtseva 18*9f811207SElena Ufimtseva struct PCIProxyDev { 19*9f811207SElena Ufimtseva PCIDevice parent_dev; 20*9f811207SElena Ufimtseva char *fd; 21*9f811207SElena Ufimtseva 22*9f811207SElena Ufimtseva /* 23*9f811207SElena Ufimtseva * Mutex used to protect the QIOChannel fd from 24*9f811207SElena Ufimtseva * the concurrent access by the VCPUs since proxy 25*9f811207SElena Ufimtseva * blocks while awaiting for the replies from the 26*9f811207SElena Ufimtseva * process remote. 27*9f811207SElena Ufimtseva */ 28*9f811207SElena Ufimtseva QemuMutex io_mutex; 29*9f811207SElena Ufimtseva QIOChannel *ioc; 30*9f811207SElena Ufimtseva Error *migration_blocker; 31*9f811207SElena Ufimtseva }; 32*9f811207SElena Ufimtseva 33*9f811207SElena Ufimtseva #endif /* PROXY_H */ 34