[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 08/21] multi-process: Initialize communication channel at the
From: |
elena . ufimtseva |
Subject: |
[PATCH v7 08/21] multi-process: Initialize communication channel at the remote end |
Date: |
Sat, 27 Jun 2020 10:09:30 -0700 |
From: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Initialize the common QIOChannel at remote the end
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
---
hw/i386/remote.c | 16 ++++++++++++++++
include/hw/i386/remote.h | 2 ++
2 files changed, 18 insertions(+)
diff --git a/hw/i386/remote.c b/hw/i386/remote.c
index 4d13abe9f3..1a1becffe0 100644
--- a/hw/i386/remote.c
+++ b/hw/i386/remote.c
@@ -15,6 +15,7 @@
#include "exec/address-spaces.h"
#include "exec/memory.h"
#include "qapi/error.h"
+#include "io/channel-util.h"
static void remote_machine_init(MachineState *machine)
{
@@ -42,6 +43,20 @@ static void remote_machine_init(MachineState *machine)
qdev_realize(DEVICE(rem_host), sysbus_get_default(), &error_fatal);
}
+static void remote_set_socket(Object *obj, const char *str, Error **errp)
+{
+ RemMachineState *s = REMOTE_MACHINE(obj);
+ Error *local_err = NULL;
+ int fd = atoi(str);
+
+ s->ioc = qio_channel_new_fd(fd, &local_err);
+}
+
+static void remote_instance_init(Object *obj)
+{
+ object_property_add_str(obj, "socket", NULL, remote_set_socket);
+}
+
static void remote_machine_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
@@ -53,6 +68,7 @@ static const TypeInfo remote_machine = {
.name = TYPE_REMOTE_MACHINE,
.parent = TYPE_MACHINE,
.instance_size = sizeof(RemMachineState),
+ .instance_init = remote_instance_init,
.class_init = remote_machine_class_init,
};
diff --git a/include/hw/i386/remote.h b/include/hw/i386/remote.h
index d118a940be..0f8b861e7a 100644
--- a/include/hw/i386/remote.h
+++ b/include/hw/i386/remote.h
@@ -17,11 +17,13 @@
#include "qom/object.h"
#include "hw/boards.h"
#include "hw/pci-host/remote.h"
+#include "io/channel.h"
typedef struct RemMachineState {
MachineState parent_obj;
RemotePCIHost *host;
+ QIOChannel *ioc;
} RemMachineState;
#define TYPE_REMOTE_MACHINE "remote-machine"
--
2.25.GIT
- [PATCH v7 20/21] multi-process: add the concept description to docs/devel/qemu-multiprocess, (continued)
- [PATCH v7 20/21] multi-process: add the concept description to docs/devel/qemu-multiprocess, elena . ufimtseva, 2020/06/27
- [PATCH v7 14/21] multi-process: PCI BAR read/write handling for proxy & remote endpoints, elena . ufimtseva, 2020/06/27
- [PATCH v7 02/21] multi-process: Add config option for multi-process QEMU, elena . ufimtseva, 2020/06/27
- [PATCH v7 03/21] multi-process: setup PCI host bridge for remote device, elena . ufimtseva, 2020/06/27
- [PATCH v7 04/21] multi-process: setup a machine object for remote device process, elena . ufimtseva, 2020/06/27
- [PATCH v7 05/21] multi-process: add qio channel function to transmit, elena . ufimtseva, 2020/06/27
- [PATCH v7 08/21] multi-process: Initialize communication channel at the remote end,
elena . ufimtseva <=
- [PATCH v7 09/21] multi-process: Initialize message handler in remote device, elena . ufimtseva, 2020/06/27
- [PATCH v7 17/21] multi-process: Retrieve PCI info from remote process, elena . ufimtseva, 2020/06/27
- [PATCH v7 15/21] multi-process: Synchronize remote memory, elena . ufimtseva, 2020/06/27