diff mbox series

[RESEND,v6,18/36] multi-process: Initialize Proxy Object's communication channel

Message ID 4a67a368c3ca27e393ac7646ed27b3821dd748e2.1587614626.git.elena.ufimtseva@oracle.com (mailing list archive)
State New, archived
Headers show
Series [RESEND,v6,01/36] memory: alloc RAM from file at offset | expand

Commit Message

Elena Ufimtseva April 23, 2020, 4:13 a.m. UTC
From: Jagannathan Raman <jag.raman@oracle.com>

Add "socket" object property which initializes the communication channel

Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
---
 hw/proxy/qemu-proxy.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

Comments

Stefan Hajnoczi May 12, 2020, 12:35 p.m. UTC | #1
On Wed, Apr 22, 2020 at 09:13:53PM -0700, elena.ufimtseva@oracle.com wrote:
> From: Jagannathan Raman <jag.raman@oracle.com>
> 
> Add "socket" object property which initializes the communication channel
> 
> Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
> Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
> ---
>  hw/proxy/qemu-proxy.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/hw/proxy/qemu-proxy.c b/hw/proxy/qemu-proxy.c
> index bf6c4117ef..40bf56fd37 100644
> --- a/hw/proxy/qemu-proxy.c
> +++ b/hw/proxy/qemu-proxy.c
> @@ -14,6 +14,25 @@
>  #include "hw/proxy/qemu-proxy.h"
>  #include "hw/pci/pci.h"
>  
> +static void proxy_set_socket(Object *obj, const char *str, Error **errp)
> +{
> +    PCIProxyDev *pdev = PCI_PROXY_DEV(obj);
> +
> +    pdev->socket = atoi(str);
> +
> +    mpqemu_init_channel(pdev->mpqemu_link, &pdev->mpqemu_link->com,
> +                        pdev->socket);

If mpqemu_link objects are not going to use QOM's object-oriented
features then a plain C struct is fine. There is no need to define a QOM
type for mpqemu_link in an earlier patch.

> +}
> +
> +static void proxy_init(Object *obj)
> +{
> +    PCIProxyDev *pdev = PCI_PROXY_DEV(obj);
> +
> +    pdev->mpqemu_link = mpqemu_link_create();
> +
> +    object_property_add_str(obj, "socket", NULL, proxy_set_socket, NULL);

Please use a qdev property like vhost-vsock.c's vhostfd and call it
either "fd" so it's clear this is the file descriptor.

monitor_fd_param() should be used to parse the fd string at .realize()
time.
diff mbox series

Patch

diff --git a/hw/proxy/qemu-proxy.c b/hw/proxy/qemu-proxy.c
index bf6c4117ef..40bf56fd37 100644
--- a/hw/proxy/qemu-proxy.c
+++ b/hw/proxy/qemu-proxy.c
@@ -14,6 +14,25 @@ 
 #include "hw/proxy/qemu-proxy.h"
 #include "hw/pci/pci.h"
 
+static void proxy_set_socket(Object *obj, const char *str, Error **errp)
+{
+    PCIProxyDev *pdev = PCI_PROXY_DEV(obj);
+
+    pdev->socket = atoi(str);
+
+    mpqemu_init_channel(pdev->mpqemu_link, &pdev->mpqemu_link->com,
+                        pdev->socket);
+}
+
+static void proxy_init(Object *obj)
+{
+    PCIProxyDev *pdev = PCI_PROXY_DEV(obj);
+
+    pdev->mpqemu_link = mpqemu_link_create();
+
+    object_property_add_str(obj, "socket", NULL, proxy_set_socket, NULL);
+}
+
 static void pci_proxy_dev_realize(PCIDevice *device, Error **errp)
 {
     PCIProxyDev *dev = PCI_PROXY_DEV(device);
@@ -41,6 +60,7 @@  static const TypeInfo pci_proxy_dev_type_info = {
     .instance_size = sizeof(PCIProxyDev),
     .class_size    = sizeof(PCIProxyDevClass),
     .class_init    = pci_proxy_dev_class_init,
+    .instance_init = proxy_init,
     .interfaces = (InterfaceInfo[]) {
         { INTERFACE_CONVENTIONAL_PCI_DEVICE },
         { },