From patchwork Mon Oct 1 11:56:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luc Michel X-Patchwork-Id: 10621909 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6438415E8 for ; Mon, 1 Oct 2018 12:01:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 50CDE2952D for ; Mon, 1 Oct 2018 12:01:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4524E29531; Mon, 1 Oct 2018 12:01:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 95FE52952D for ; Mon, 1 Oct 2018 12:01:08 +0000 (UTC) Received: from localhost ([::1]:37821 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6wst-0005fb-Sc for patchwork-qemu-devel@patchwork.kernel.org; Mon, 01 Oct 2018 08:01:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35056) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6wpT-0002RE-Ax for qemu-devel@nongnu.org; Mon, 01 Oct 2018 07:57:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g6wpQ-0005o9-OL for qemu-devel@nongnu.org; Mon, 01 Oct 2018 07:57:35 -0400 Received: from greensocs.com ([193.104.36.180]:40116) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6wpM-0005gU-HV; Mon, 01 Oct 2018 07:57:28 -0400 Received: from localhost (localhost [127.0.0.1]) by greensocs.com (Postfix) with ESMTP id 789C9511C7B; Mon, 1 Oct 2018 13:57:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1538395032; bh=u9mBA29Uy7CeTohlrONoiEzan2f3Z3lvgNj7vWz+qbw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=01QMJ5a16bbM8B6jaJcW0dzKjijcXTRC+Vie2Ovq6yE/vlT799c2nWi3e5haUKKAo bGMEzW+lvV8hOZXjcTFC2ABa9pv8TtZuwquBlzKfyl7HdmWLyxWKYYKkUlsidu4sqS glI9A6tZGMzCNtn7Iq0OkEcQBbQL9sqB7Mh1GlNA= X-Virus-Scanned: amavisd-new at greensocs.com Authentication-Results: gs-01.greensocs.com (amavisd-new); dkim=pass (1024-bit key) header.d=greensocs.com header.b=cVUEd9a9; dkim=pass (1024-bit key) header.d=greensocs.com header.b=cVUEd9a9 Received: from greensocs.com ([127.0.0.1]) by localhost (gs-01.greensocs.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v-Jp0GMdIrCi; Mon, 1 Oct 2018 13:57:11 +0200 (CEST) Received: by greensocs.com (Postfix, from userid 998) id B2305511C70; Mon, 1 Oct 2018 13:57:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1538395028; bh=u9mBA29Uy7CeTohlrONoiEzan2f3Z3lvgNj7vWz+qbw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cVUEd9a9sjwACAjH6LWJA0zP37TVqbNf/5tx0V/KU96Z0zRC9UzNFYzEBxLXyEOw5 mVr/6ZqVne675/90EzSMYggLHM6tj/ao9kOb2TKSt63iYKAFtraGCYWIiv1k/t+iIy saCObSh1QI03nkGt3bPl1TbO6g3JZShRuWTtKCuY= Received: from michell-laptop.home.lmichel.fr (LFbn-1-8165-82.w90-112.abo.wanadoo.fr [90.112.74.82]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: luc.michel@greensocs.com) by greensocs.com (Postfix) with ESMTPSA id 582A7511C59; Mon, 1 Oct 2018 13:57:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1538395028; bh=u9mBA29Uy7CeTohlrONoiEzan2f3Z3lvgNj7vWz+qbw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cVUEd9a9sjwACAjH6LWJA0zP37TVqbNf/5tx0V/KU96Z0zRC9UzNFYzEBxLXyEOw5 mVr/6ZqVne675/90EzSMYggLHM6tj/ao9kOb2TKSt63iYKAFtraGCYWIiv1k/t+iIy saCObSh1QI03nkGt3bPl1TbO6g3JZShRuWTtKCuY= From: Luc Michel To: qemu-devel@nongnu.org Date: Mon, 1 Oct 2018 13:56:55 +0200 Message-Id: <20181001115704.701-7-luc.michel@greensocs.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181001115704.701-1-luc.michel@greensocs.com> References: <20181001115704.701-1-luc.michel@greensocs.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 193.104.36.180 Subject: [Qemu-devel] [PATCH v2 06/15] gdbstub: add multiprocess support to (f|s)ThreadInfo and ThreadExtraInfo X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alistair@alistair23.me, mark.burton@greensocs.com, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , saipava@xilinx.com, edgari@xilinx.com, qemu-arm@nongnu.org, Luc Michel Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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. Signed-off-by: Luc Michel Reviewed-by: Philippe Mathieu-Daudé --- gdbstub.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 3242f0d261..63d7913269 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1248,11 +1248,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]; @@ -1540,30 +1539,43 @@ 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_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_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); + read_thread_id(p + 16, &p, &pid, &tid); + 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 in multiprocess mode */ + ObjectClass *oc = object_get_class(OBJECT(cpu)); + const char *cpu_model = object_class_get_name(oc); + len = snprintf((char *)mem_buf, sizeof(buf) / 2, + "CPU#%d %s [%s]", cpu->cpu_index, + cpu_model, + cpu->halted ? "halted " : "running"); + } 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;