xref: /qemu/include/hw/remote/proxy.h (revision 9f8112073aad8e485ac012ee18809457ab7f23a6)
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