From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: elena.ufimtseva@oracle.com
Cc: fam@euphon.net, john.g.johnson@oracle.com,
swapnil.ingle@nutanix.com, mst@redhat.com, qemu-devel@nongnu.org,
kraxel@redhat.com, jag.raman@oracle.com, quintela@redhat.com,
armbru@redhat.com, kanth.ghatraju@oracle.com, felipe@nutanix.com,
thuth@redhat.com, ehabkost@redhat.com, konrad.wilk@oracle.com,
liran.alon@oracle.com, stefanha@redhat.com,
thanos.makatos@nutanix.com, rth@twiddle.net, kwolf@redhat.com,
berrange@redhat.com, mreitz@redhat.com,
ross.lagerwall@citrix.com, marcandre.lureau@gmail.com,
pbonzini@redhat.com
Subject: Re: [PATCH v6 06/36] monitor: destaticize HMP commands
Date: Thu, 9 Apr 2020 18:51:27 +0100 [thread overview]
Message-ID: <20200409175127.GE3065@work-vm> (raw)
In-Reply-To: <5b37943ea8f27258f29b1c8a5cd8a4905ae82739.1586165555.git.elena.ufimtseva@oracle.com>
* elena.ufimtseva@oracle.com (elena.ufimtseva@oracle.com) wrote:
> From: Jagannathan Raman <jag.raman@oracle.com>
>
> 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>
Hmm OK, so
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
but it might be better where you can, to restrict these to the ones you
want to share with your processes; for example I doubt hmp_wavcapture
would be shared.
Dave
> ---
> hmp-commands.hx | 4 +-
> monitor/misc.c | 76 +++++++++++++++++++-------------------
> monitor/monitor-internal.h | 38 +++++++++++++++++++
> 3 files changed, 78 insertions(+), 40 deletions(-)
>
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index 7f0f3974ad..02cae25c24 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -11,7 +11,7 @@ HXCOMM HXCOMM can be used for comments, discarded from both rST and C.
> .args_type = "name:S?",
> .params = "[cmd]",
> .help = "show the help",
> - .cmd = do_help_cmd,
> + .cmd = hmp_do_help_cmd,
> .flags = "p",
> },
>
> @@ -555,7 +555,7 @@ ERST
> .args_type = "fmt:/,val:l",
> .params = "/fmt expr",
> .help = "print expression value (use $reg for CPU register access)",
> - .cmd = do_print,
> + .cmd = hmp_do_print,
> },
>
> SRST
> diff --git a/monitor/misc.c b/monitor/misc.c
> index 6c45fa490f..c0eee6f4ab 100644
> --- a/monitor/misc.c
> +++ b/monitor/misc.c
> @@ -178,12 +178,12 @@ int hmp_compare_cmd(const char *name, const char *list)
> return 0;
> }
>
> -static void do_help_cmd(Monitor *mon, const QDict *qdict)
> +void hmp_do_help_cmd(Monitor *mon, const QDict *qdict)
> {
> help_cmd(mon, qdict_get_try_str(qdict, "name"));
> }
>
> -static void hmp_trace_event(Monitor *mon, const QDict *qdict)
> +void hmp_trace_event(Monitor *mon, const QDict *qdict)
> {
> const char *tp_name = qdict_get_str(qdict, "name");
> bool new_state = qdict_get_bool(qdict, "option");
> @@ -227,7 +227,7 @@ static void hmp_trace_file(Monitor *mon, const QDict *qdict)
> }
> #endif
>
> -static void hmp_info_help(Monitor *mon, const QDict *qdict)
> +void hmp_info_help(Monitor *mon, const QDict *qdict)
> {
> help_cmd(mon, "info");
> }
> @@ -315,7 +315,7 @@ int monitor_get_cpu_index(void)
> return cs ? cs->cpu_index : UNASSIGNED_CPU_INDEX;
> }
>
> -static void hmp_info_registers(Monitor *mon, const QDict *qdict)
> +void hmp_info_registers(Monitor *mon, const QDict *qdict)
> {
> bool all_cpus = qdict_get_try_bool(qdict, "cpustate_all", false);
> CPUState *cs;
> @@ -338,7 +338,7 @@ static void hmp_info_registers(Monitor *mon, const QDict *qdict)
> }
>
> #ifdef CONFIG_TCG
> -static void hmp_info_jit(Monitor *mon, const QDict *qdict)
> +void hmp_info_jit(Monitor *mon, const QDict *qdict)
> {
> if (!tcg_enabled()) {
> error_report("JIT information is only available with accel=tcg");
> @@ -349,13 +349,13 @@ static void hmp_info_jit(Monitor *mon, const QDict *qdict)
> dump_drift_info();
> }
>
> -static void hmp_info_opcount(Monitor *mon, const QDict *qdict)
> +void hmp_info_opcount(Monitor *mon, const QDict *qdict)
> {
> dump_opcount_info();
> }
> #endif
>
> -static void hmp_info_sync_profile(Monitor *mon, const QDict *qdict)
> +void hmp_info_sync_profile(Monitor *mon, const QDict *qdict)
> {
> int64_t max = qdict_get_try_int(qdict, "max", 10);
> bool mean = qdict_get_try_bool(qdict, "mean", false);
> @@ -366,7 +366,7 @@ static void hmp_info_sync_profile(Monitor *mon, const QDict *qdict)
> qsp_report(max, sort_by, coalesce);
> }
>
> -static void hmp_info_history(Monitor *mon, const QDict *qdict)
> +void hmp_info_history(Monitor *mon, const QDict *qdict)
> {
> MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common);
> int i;
> @@ -386,7 +386,7 @@ static void hmp_info_history(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_info_cpustats(Monitor *mon, const QDict *qdict)
> +void hmp_info_cpustats(Monitor *mon, const QDict *qdict)
> {
> CPUState *cs = mon_get_cpu();
>
> @@ -397,7 +397,7 @@ static void hmp_info_cpustats(Monitor *mon, const QDict *qdict)
> cpu_dump_statistics(cs, 0);
> }
>
> -static void hmp_info_trace_events(Monitor *mon, const QDict *qdict)
> +void hmp_info_trace_events(Monitor *mon, const QDict *qdict)
> {
> const char *name = qdict_get_try_str(qdict, "name");
> bool has_vcpu = qdict_haskey(qdict, "vcpu");
> @@ -457,7 +457,7 @@ void qmp_client_migrate_info(const char *protocol, const char *hostname,
> error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "protocol", "spice");
> }
>
> -static void hmp_logfile(Monitor *mon, const QDict *qdict)
> +void hmp_logfile(Monitor *mon, const QDict *qdict)
> {
> Error *err = NULL;
>
> @@ -467,7 +467,7 @@ static void hmp_logfile(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_log(Monitor *mon, const QDict *qdict)
> +void hmp_log(Monitor *mon, const QDict *qdict)
> {
> int mask;
> const char *items = qdict_get_str(qdict, "items");
> @@ -484,7 +484,7 @@ static void hmp_log(Monitor *mon, const QDict *qdict)
> qemu_set_log(mask);
> }
>
> -static void hmp_singlestep(Monitor *mon, const QDict *qdict)
> +void hmp_singlestep(Monitor *mon, const QDict *qdict)
> {
> const char *option = qdict_get_try_str(qdict, "option");
> if (!option || !strcmp(option, "on")) {
> @@ -496,7 +496,7 @@ static void hmp_singlestep(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_gdbserver(Monitor *mon, const QDict *qdict)
> +void hmp_gdbserver(Monitor *mon, const QDict *qdict)
> {
> const char *device = qdict_get_try_str(qdict, "device");
> if (!device)
> @@ -512,7 +512,7 @@ static void hmp_gdbserver(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_watchdog_action(Monitor *mon, const QDict *qdict)
> +void hmp_watchdog_action(Monitor *mon, const QDict *qdict)
> {
> const char *action = qdict_get_str(qdict, "action");
> if (select_watchdog_action(action) == -1) {
> @@ -654,7 +654,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
> }
> }
>
> -static void hmp_memory_dump(Monitor *mon, const QDict *qdict)
> +void hmp_memory_dump(Monitor *mon, const QDict *qdict)
> {
> int count = qdict_get_int(qdict, "count");
> int format = qdict_get_int(qdict, "format");
> @@ -664,7 +664,7 @@ static void hmp_memory_dump(Monitor *mon, const QDict *qdict)
> memory_dump(mon, count, format, size, addr, 0);
> }
>
> -static void hmp_physical_memory_dump(Monitor *mon, const QDict *qdict)
> +void hmp_physical_memory_dump(Monitor *mon, const QDict *qdict)
> {
> int count = qdict_get_int(qdict, "count");
> int format = qdict_get_int(qdict, "format");
> @@ -694,7 +694,7 @@ static void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, Error **errp)
> return qemu_map_ram_ptr(mrs.mr->ram_block, mrs.offset_within_region);
> }
>
> -static void hmp_gpa2hva(Monitor *mon, const QDict *qdict)
> +void hmp_gpa2hva(Monitor *mon, const QDict *qdict)
> {
> hwaddr addr = qdict_get_int(qdict, "addr");
> Error *local_err = NULL;
> @@ -714,7 +714,7 @@ static void hmp_gpa2hva(Monitor *mon, const QDict *qdict)
> memory_region_unref(mr);
> }
>
> -static void hmp_gva2gpa(Monitor *mon, const QDict *qdict)
> +void hmp_gva2gpa(Monitor *mon, const QDict *qdict)
> {
> target_ulong addr = qdict_get_int(qdict, "addr");
> MemTxAttrs attrs;
> @@ -769,7 +769,7 @@ out:
> return ret;
> }
>
> -static void hmp_gpa2hpa(Monitor *mon, const QDict *qdict)
> +void hmp_gpa2hpa(Monitor *mon, const QDict *qdict)
> {
> hwaddr addr = qdict_get_int(qdict, "addr");
> Error *local_err = NULL;
> @@ -796,7 +796,7 @@ static void hmp_gpa2hpa(Monitor *mon, const QDict *qdict)
> }
> #endif
>
> -static void do_print(Monitor *mon, const QDict *qdict)
> +void hmp_do_print(Monitor *mon, const QDict *qdict)
> {
> int format = qdict_get_int(qdict, "format");
> hwaddr val = qdict_get_int(qdict, "val");
> @@ -822,7 +822,7 @@ static void do_print(Monitor *mon, const QDict *qdict)
> monitor_printf(mon, "\n");
> }
>
> -static void hmp_sum(Monitor *mon, const QDict *qdict)
> +void hmp_sum(Monitor *mon, const QDict *qdict)
> {
> uint32_t addr;
> uint16_t sum;
> @@ -842,7 +842,7 @@ static void hmp_sum(Monitor *mon, const QDict *qdict)
>
> static int mouse_button_state;
>
> -static void hmp_mouse_move(Monitor *mon, const QDict *qdict)
> +void hmp_mouse_move(Monitor *mon, const QDict *qdict)
> {
> int dx, dy, dz, button;
> const char *dx_str = qdict_get_str(qdict, "dx_str");
> @@ -866,7 +866,7 @@ static void hmp_mouse_move(Monitor *mon, const QDict *qdict)
> qemu_input_event_sync();
> }
>
> -static void hmp_mouse_button(Monitor *mon, const QDict *qdict)
> +void hmp_mouse_button(Monitor *mon, const QDict *qdict)
> {
> static uint32_t bmap[INPUT_BUTTON__MAX] = {
> [INPUT_BUTTON_LEFT] = MOUSE_EVENT_LBUTTON,
> @@ -883,7 +883,7 @@ static void hmp_mouse_button(Monitor *mon, const QDict *qdict)
> mouse_button_state = button_state;
> }
>
> -static void hmp_ioport_read(Monitor *mon, const QDict *qdict)
> +void hmp_ioport_read(Monitor *mon, const QDict *qdict)
> {
> int size = qdict_get_int(qdict, "size");
> int addr = qdict_get_int(qdict, "addr");
> @@ -917,7 +917,7 @@ static void hmp_ioport_read(Monitor *mon, const QDict *qdict)
> suffix, addr, size * 2, val);
> }
>
> -static void hmp_ioport_write(Monitor *mon, const QDict *qdict)
> +void hmp_ioport_write(Monitor *mon, const QDict *qdict)
> {
> int size = qdict_get_int(qdict, "size");
> int addr = qdict_get_int(qdict, "addr");
> @@ -939,7 +939,7 @@ static void hmp_ioport_write(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_boot_set(Monitor *mon, const QDict *qdict)
> +void hmp_boot_set(Monitor *mon, const QDict *qdict)
> {
> Error *local_err = NULL;
> const char *bootdevice = qdict_get_str(qdict, "bootdevice");
> @@ -952,7 +952,7 @@ static void hmp_boot_set(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_info_mtree(Monitor *mon, const QDict *qdict)
> +void hmp_info_mtree(Monitor *mon, const QDict *qdict)
> {
> bool flatview = qdict_get_try_bool(qdict, "flatview", false);
> bool dispatch_tree = qdict_get_try_bool(qdict, "dispatch_tree", false);
> @@ -965,7 +965,7 @@ static void hmp_info_mtree(Monitor *mon, const QDict *qdict)
>
> int64_t dev_time;
>
> -static void hmp_info_profile(Monitor *mon, const QDict *qdict)
> +void hmp_info_profile(Monitor *mon, const QDict *qdict)
> {
> static int64_t last_cpu_exec_time;
> int64_t cpu_exec_time;
> @@ -982,7 +982,7 @@ static void hmp_info_profile(Monitor *mon, const QDict *qdict)
> dev_time = 0;
> }
> #else
> -static void hmp_info_profile(Monitor *mon, const QDict *qdict)
> +void hmp_info_profile(Monitor *mon, const QDict *qdict)
> {
> monitor_printf(mon, "Internal profiler not compiled\n");
> }
> @@ -991,7 +991,7 @@ static void hmp_info_profile(Monitor *mon, const QDict *qdict)
> /* Capture support */
> static QLIST_HEAD (capture_list_head, CaptureState) capture_head;
>
> -static void hmp_info_capture(Monitor *mon, const QDict *qdict)
> +void hmp_info_capture(Monitor *mon, const QDict *qdict)
> {
> int i;
> CaptureState *s;
> @@ -1002,7 +1002,7 @@ static void hmp_info_capture(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_stopcapture(Monitor *mon, const QDict *qdict)
> +void hmp_stopcapture(Monitor *mon, const QDict *qdict)
> {
> int i;
> int n = qdict_get_int(qdict, "n");
> @@ -1018,7 +1018,7 @@ static void hmp_stopcapture(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_wavcapture(Monitor *mon, const QDict *qdict)
> +void hmp_wavcapture(Monitor *mon, const QDict *qdict)
> {
> const char *path = qdict_get_str(qdict, "path");
> int freq = qdict_get_try_int(qdict, "freq", 44100);
> @@ -1071,7 +1071,7 @@ static void hmp_warn_acl(void)
> warn_acl = true;
> }
>
> -static void hmp_acl_show(Monitor *mon, const QDict *qdict)
> +void hmp_acl_show(Monitor *mon, const QDict *qdict)
> {
> const char *aclname = qdict_get_str(qdict, "aclname");
> QAuthZList *auth = find_auth(mon, aclname);
> @@ -1098,7 +1098,7 @@ static void hmp_acl_show(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_acl_reset(Monitor *mon, const QDict *qdict)
> +void hmp_acl_reset(Monitor *mon, const QDict *qdict)
> {
> const char *aclname = qdict_get_str(qdict, "aclname");
> QAuthZList *auth = find_auth(mon, aclname);
> @@ -1115,7 +1115,7 @@ static void hmp_acl_reset(Monitor *mon, const QDict *qdict)
> monitor_printf(mon, "acl: removed all rules\n");
> }
>
> -static void hmp_acl_policy(Monitor *mon, const QDict *qdict)
> +void hmp_acl_policy(Monitor *mon, const QDict *qdict)
> {
> const char *aclname = qdict_get_str(qdict, "aclname");
> const char *policy = qdict_get_str(qdict, "policy");
> @@ -1156,7 +1156,7 @@ static QAuthZListFormat hmp_acl_get_format(const char *match)
> }
> }
>
> -static void hmp_acl_add(Monitor *mon, const QDict *qdict)
> +void hmp_acl_add(Monitor *mon, const QDict *qdict)
> {
> const char *aclname = qdict_get_str(qdict, "aclname");
> const char *match = qdict_get_str(qdict, "match");
> @@ -1209,7 +1209,7 @@ static void hmp_acl_add(Monitor *mon, const QDict *qdict)
> }
> }
>
> -static void hmp_acl_remove(Monitor *mon, const QDict *qdict)
> +void hmp_acl_remove(Monitor *mon, const QDict *qdict)
> {
> const char *aclname = qdict_get_str(qdict, "aclname");
> const char *match = qdict_get_str(qdict, "match");
> diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h
> index 8f60ccc70a..bc8c9fa16b 100644
> --- a/monitor/monitor-internal.h
> +++ b/monitor/monitor-internal.h
> @@ -183,4 +183,42 @@ int hmp_compare_cmd(const char *name, const char *list);
> void qmp_query_qmp_schema(QDict *qdict, QObject **ret_data,
> Error **errp);
>
> +void hmp_do_help_cmd(Monitor *mon, const QDict *qdict);
> +void hmp_trace_event(Monitor *mon, const QDict *qdict);
> +void hmp_info_help(Monitor *mon, const QDict *qdict);
> +void hmp_info_registers(Monitor *mon, const QDict *qdict);
> +void hmp_info_jit(Monitor *mon, const QDict *qdict);
> +void hmp_info_opcount(Monitor *mon, const QDict *qdict);
> +void hmp_info_sync_profile(Monitor *mon, const QDict *qdict);
> +void hmp_info_history(Monitor *mon, const QDict *qdict);
> +void hmp_info_cpustats(Monitor *mon, const QDict *qdict);
> +void hmp_info_trace_events(Monitor *mon, const QDict *qdict);
> +void hmp_logfile(Monitor *mon, const QDict *qdict);
> +void hmp_log(Monitor *mon, const QDict *qdict);
> +void hmp_singlestep(Monitor *mon, const QDict *qdict);
> +void hmp_gdbserver(Monitor *mon, const QDict *qdict);
> +void hmp_watchdog_action(Monitor *mon, const QDict *qdict);
> +void hmp_memory_dump(Monitor *mon, const QDict *qdict);
> +void hmp_physical_memory_dump(Monitor *mon, const QDict *qdict);
> +void hmp_gpa2hva(Monitor *mon, const QDict *qdict);
> +void hmp_gva2gpa(Monitor *mon, const QDict *qdict);
> +void hmp_gpa2hpa(Monitor *mon, const QDict *qdict);
> +void hmp_do_print(Monitor *mon, const QDict *qdict);
> +void hmp_sum(Monitor *mon, const QDict *qdict);
> +void hmp_mouse_move(Monitor *mon, const QDict *qdict);
> +void hmp_mouse_button(Monitor *mon, const QDict *qdict);
> +void hmp_ioport_read(Monitor *mon, const QDict *qdict);
> +void hmp_ioport_write(Monitor *mon, const QDict *qdict);
> +void hmp_boot_set(Monitor *mon, const QDict *qdict);
> +void hmp_info_mtree(Monitor *mon, const QDict *qdict);
> +void hmp_info_profile(Monitor *mon, const QDict *qdict);
> +void hmp_info_capture(Monitor *mon, const QDict *qdict);
> +void hmp_stopcapture(Monitor *mon, const QDict *qdict);
> +void hmp_wavcapture(Monitor *mon, const QDict *qdict);
> +void hmp_acl_show(Monitor *mon, const QDict *qdict);
> +void hmp_acl_reset(Monitor *mon, const QDict *qdict);
> +void hmp_acl_policy(Monitor *mon, const QDict *qdict);
> +void hmp_acl_add(Monitor *mon, const QDict *qdict);
> +void hmp_acl_remove(Monitor *mon, const QDict *qdict);
> +
> #endif
> --
> 2.25.GIT
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2020-04-09 17:52 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-06 9:40 [PATCH v6 00/36] Initial support for multi-process qemu elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 01/36] memory: alloc RAM from file at offset elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 02/36] multi-process: Refactor machine_init and exit notifiers elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 03/36] command-line: refractor parser code elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 04/36] multi-process: Refactor chardev functions out of vl.c elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 05/36] multi-process: Refactor monitor " elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 06/36] monitor: destaticize HMP commands elena.ufimtseva
2020-04-09 17:51 ` Dr. David Alan Gilbert [this message]
2020-04-06 9:40 ` [PATCH v6 07/36] multi-process: add a command line option for debug file elena.ufimtseva
2020-04-06 9:40 ` [PATCH v6 08/36] multi-process: Add stub functions to facilate build of multi-process elena.ufimtseva
2020-04-06 13:36 ` Eric Blake
2020-04-06 9:40 ` [PATCH v6 09/36] multi-process: Add config option for multi-process QEMU elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 10/36] multi-process: build system for remote device process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 11/36] multi-process: define mpqemu-link object elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 12/36] multi-process: add functions to synchronize proxy and remote endpoints elena.ufimtseva
2020-04-09 17:56 ` Dr. David Alan Gilbert
2020-04-06 9:41 ` [PATCH v6 13/36] multi-process: setup PCI host bridge for remote device elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 14/36] multi-process: setup a machine object for remote device process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 15/36] multi-process: setup memory manager for remote device elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 16/36] multi-process: remote process initialization elena.ufimtseva
2020-04-09 18:00 ` Dr. David Alan Gilbert
2020-04-10 8:22 ` Elena Ufimtseva
2020-04-06 9:41 ` [PATCH v6 17/36] multi-process: introduce proxy object elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 18/36] multi-process: Initialize Proxy Object's communication channel elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 19/36] multi-process: Connect Proxy Object with device in the remote process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 20/36] multi-process: Forward PCI config space acceses to " elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 21/36] multi-process: PCI BAR read/write handling for proxy & remote endpoints elena.ufimtseva
2020-04-09 18:55 ` Dr. David Alan Gilbert
2020-04-06 9:41 ` [PATCH v6 22/36] multi-process: Synchronize remote memory elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 23/36] multi-process: create IOHUB object to handle irq elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 24/36] multi-process: Retrieve PCI info from remote process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 25/36] multi-process: Introduce build flags to separate remote process code elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 26/36] multi-process: add parse_cmdline in remote process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 27/36] multi-process: add support to parse device option elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 28/36] multi-process: send heartbeat messages to remote elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 29/36] multi-process: handle heartbeat messages in remote process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 30/36] multi-process: perform device reset in the " elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 31/36] multi-process/mon: choose HMP commands based on target elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 32/36] multi-process/mon: stub functions to enable QMP module for remote process elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 33/36] multi-process/mon: enable QMP module support in the " elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 34/36] multi-process/mon: Initialize QMP module for remote processes elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 35/36] multi-process: add the concept description to docs/devel/qemu-multiprocess elena.ufimtseva
2020-04-06 9:41 ` [PATCH v6 36/36] multi-process: add configure and usage information elena.ufimtseva
2020-04-06 10:14 ` [PATCH v6 00/36] Initial support for multi-process qemu no-reply
2020-04-06 16:28 ` Elena Ufimtseva
2020-04-06 10:36 ` no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200409175127.GE3065@work-vm \
--to=dgilbert@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=ehabkost@redhat.com \
--cc=elena.ufimtseva@oracle.com \
--cc=fam@euphon.net \
--cc=felipe@nutanix.com \
--cc=jag.raman@oracle.com \
--cc=john.g.johnson@oracle.com \
--cc=kanth.ghatraju@oracle.com \
--cc=konrad.wilk@oracle.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=liran.alon@oracle.com \
--cc=marcandre.lureau@gmail.com \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=ross.lagerwall@citrix.com \
--cc=rth@twiddle.net \
--cc=stefanha@redhat.com \
--cc=swapnil.ingle@nutanix.com \
--cc=thanos.makatos@nutanix.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).