[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH v7 07/16] gdbstub: add multiprocess support to (f|
From: |
Edgar E. Iglesias |
Subject: |
Re: [Qemu-arm] [PATCH v7 07/16] gdbstub: add multiprocess support to (f|s)ThreadInfo and ThreadExtraInfo |
Date: |
Fri, 30 Nov 2018 11:35:03 +0100 |
User-agent: |
Mutt/1.9.4 (2018-02-28) |
On Fri, Nov 23, 2018 at 10:17:20AM +0100, Luc Michel wrote:
> Change the thread info related packets handling to support multiprocess
> extension.
>
> Add the CPUs class name in the extra info to help differentiate
> them in multiprocess mode.
Reviewed-by: Edgar E. Iglesias <address@hidden>
>
> Signed-off-by: Luc Michel <address@hidden>
> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> gdbstub.c | 37 +++++++++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 10 deletions(-)
>
> diff --git a/gdbstub.c b/gdbstub.c
> index 728efdabee..12d4e33c40 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1262,11 +1262,10 @@ out:
> static int gdb_handle_packet(GDBState *s, const char *line_buf)
> {
> CPUState *cpu;
> CPUClass *cc;
> const char *p;
> - uint32_t thread;
> uint32_t pid, tid;
> int ch, reg_size, type, res;
> uint8_t mem_buf[MAX_PACKET_LENGTH];
> char buf[sizeof(mem_buf) + 1 /* trailing NUL */];
> char thread_id[16];
> @@ -1558,30 +1557,48 @@ static int gdb_handle_packet(GDBState *s, const char
> *line_buf)
> snprintf(buf, sizeof(buf), "QC%s",
> gdb_fmt_thread_id(s, cpu, thread_id,
> sizeof(thread_id)));
> put_packet(s, buf);
> break;
> } else if (strcmp(p,"fThreadInfo") == 0) {
> - s->query_cpu = first_cpu;
> + s->query_cpu = gdb_first_attached_cpu(s);
> goto report_cpuinfo;
> } else if (strcmp(p,"sThreadInfo") == 0) {
> report_cpuinfo:
> if (s->query_cpu) {
> - snprintf(buf, sizeof(buf), "m%x",
> cpu_gdb_index(s->query_cpu));
> + snprintf(buf, sizeof(buf), "m%s",
> + gdb_fmt_thread_id(s, s->query_cpu,
> + thread_id, sizeof(thread_id)));
> put_packet(s, buf);
> - s->query_cpu = CPU_NEXT(s->query_cpu);
> + s->query_cpu = gdb_next_attached_cpu(s, s->query_cpu);
> } else
> put_packet(s, "l");
> break;
> } else if (strncmp(p,"ThreadExtraInfo,", 16) == 0) {
> - thread = strtoull(p+16, (char **)&p, 16);
> - cpu = find_cpu(thread);
> + if (read_thread_id(p + 16, &p, &pid, &tid) ==
> GDB_READ_THREAD_ERR) {
> + put_packet(s, "E22");
> + break;
> + }
> + cpu = gdb_get_cpu(s, pid, tid);
> if (cpu != NULL) {
> cpu_synchronize_state(cpu);
> - /* memtohex() doubles the required space */
> - len = snprintf((char *)mem_buf, sizeof(buf) / 2,
> - "CPU#%d [%s]", cpu->cpu_index,
> - cpu->halted ? "halted " : "running");
> +
> + if (s->multiprocess && (s->process_num > 1)) {
> + /* Print the CPU model and name in multiprocess mode */
> + ObjectClass *oc = object_get_class(OBJECT(cpu));
> + const char *cpu_model = object_class_get_name(oc);
> + char *cpu_name =
> + object_get_canonical_path_component(OBJECT(cpu));
> + len = snprintf((char *)mem_buf, sizeof(buf) / 2,
> + "%s %s [%s]", cpu_model, cpu_name,
> + cpu->halted ? "halted " : "running");
> + g_free(cpu_name);
> + } else {
> + /* memtohex() doubles the required space */
> + len = snprintf((char *)mem_buf, sizeof(buf) / 2,
> + "CPU#%d [%s]", cpu->cpu_index,
> + cpu->halted ? "halted " : "running");
> + }
> trace_gdbstub_op_extra_info((char *)mem_buf);
> memtohex(buf, mem_buf, len);
> put_packet(s, buf);
> }
> break;
> --
> 2.19.1
>
- Re: [Qemu-arm] [Qemu-devel] [PATCH v7 01/16] hw/cpu: introduce CPU clusters, (continued)
[Qemu-arm] [PATCH v7 03/16] gdbstub: add multiprocess support to '?' packets, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 05/16] gdbstub: add multiprocess support to vCont packets, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 12/16] gdbstub: add support for vAttach packets, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 06/16] gdbstub: add multiprocess support to 'sC' packets, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 04/16] gdbstub: add multiprocess support to 'H' and 'T' packets, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 07/16] gdbstub: add multiprocess support to (f|s)ThreadInfo and ThreadExtraInfo, Luc Michel, 2018/11/23
- Re: [Qemu-arm] [PATCH v7 07/16] gdbstub: add multiprocess support to (f|s)ThreadInfo and ThreadExtraInfo,
Edgar E. Iglesias <=
[Qemu-arm] [PATCH v7 13/16] gdbstub: processes initialization on new peer connection, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 11/16] gdbstub: add support for extended mode packet, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 14/16] gdbstub: gdb_set_stop_cpu: ignore request when process is not attached, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 15/16] gdbstub: add multiprocess extension support, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 16/16] arm/xlnx-zynqmp: put APUs and RPUs in separate CPU clusters, Luc Michel, 2018/11/23
[Qemu-arm] [PATCH v7 10/16] gdbstub: add multiprocess support to 'D' packets, Luc Michel, 2018/11/23